{ "id": "144366", "key": "TIMOB-18541", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2017-01-14T23:31:49.000+0000", "created": "2015-02-06T18:46:26.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-01-14T23:31:49.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "I have been attempting to squash a truly mind twisting bizarre bug with the Platino module.\r\n\r\nI have observed that no matter what I do, on 64 bit I can't receive touchesBegan on a viewproxy. \r\n\r\nCan you please tell me what the last githash on titanium_mobile that is free of any 64bit compatibility improvements, and what the first (64bit is now supported) git hash is?\r\n\r\nI would be happy to get on a skype or call regarding this issue in further detail\r\nEric is aware of some of the details.\r\n\r\nThanks.", "attachment": [], "flagged": false, "summary": "iOS: Unable to receive touchesBegan on ViewProxy", "creator": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "342438", "author": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "body": "at this point it is worth asking, what is the purpose of OSAtomicIncrement32Barrier inside TiBase.m\r\n\r\n\r\nI get that the definition of OSAtomicIncrement32Barrier is\r\n\r\n__inline static\r\nint32_t\tOSAtomicIncrement32Barrier( volatile int32_t *__theValue )\r\n { return OSAtomicAdd32Barrier( 1, __theValue); }\r\n\r\nBut why does kroll use it, why not OSAtomicIncrement64Barrier? \r\n\r\nCan we be absolutely 100% sure that the JSContext in kroll is 64bit?", "updateAuthor": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-06T18:48:48.000+0000", "updated": "2015-02-06T18:52:53.000+0000" }, { "id": "342622", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~sophrinix] There are two pieces to the updates. One is the inclusion of a 64-bit version of JSCore. This happened across a few different commits as we updated JSCore more than once as we uncovered bugs.\r\n\r\nThe second piece was the fix of some 64-bit issues in the Titanium SDK, the debugger and the profiler.\r\n\r\nI am _positive_ that we are at least compiling the SDK and all related properties with a 64-bit slice.\r\n\r\n* Overall ticket: TIMOB-15327\r\n* Upgrade JSCore: TIMOB-11093 (see PRs at bottom)\r\n\r\nThere are a number of tickets that relate to specific SDK fixes (as linked in the overall ticket)\r\n\r\nIf you'd like us to help, could you provide a test case that reproduces the issue?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-09T19:50:48.000+0000", "updated": "2015-02-09T19:50:48.000+0000" }, { "id": "342645", "author": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "body": "If you need access to this repository ( Ingo has read and write access) please comment on this thread or email me sophrinix @ gmail\r\n\r\nI have created a git repo https://github.com/BlackGateGames/tankgame-with-module\r\nand sent out invites to be able to read and write to this repo.\r\n\r\nIt has a copy of the platino code base, a platino game, some screenshots detailing what we are specifically seeing.\r\n\r\nIt also has a zip file which will probably be the most useful:\r\n\r\nin the build/iphone folder, there is a generated xcodeproj with the platino code included ( so there is no need to building the module and link).\r\n\r\n\r\nThe 1 sentence issue we are having is :\r\n\r\nOn armv7 you can see that _sendTouchesForEvent (from TiUIWindow) is being passed to coLanicaPlatinoGameView touchesBegan;\r\n whereas, arm64, it is going directly to TiUIView and bypassing the gameview object all together.\r\n", "updateAuthor": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-09T21:00:24.000+0000", "updated": "2015-02-09T21:00:35.000+0000" }, { "id": "342650", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~sophrinix] can you give github access to vishalduggal?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-09T21:36:14.000+0000", "updated": "2015-02-09T21:36:14.000+0000" }, { "id": "342656", "author": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "body": "done.", "updateAuthor": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-09T21:44:47.000+0000", "updated": "2015-02-09T21:44:47.000+0000" }, { "id": "342770", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~vduggal] TIMOB-18545 seems possibly related.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-10T15:51:13.000+0000", "updated": "2015-02-10T15:51:13.000+0000" }, { "id": "342781", "author": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "body": "TIMOB-18545 is not related. That is a bug in TiViewProxy.\r\n\r\nRegarding this bug, the basic issue is that \r\n`- (UIView *)hitTest:(CGPoint) point withEvent:(UIEvent *)event` \r\nreturns nil on the GameView object on 64bit builds. So touches are not delivered to the GameView\r\n\r\nI have no idea why that method returns nil. I also noticed that the method\r\n`- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event` is not called for the GameView when hitTest is invoked . \r\n\r\nCould be an issue with the layer class they are using (CAEAGLLayer) or a bug in their implementation of hitTest. Either ways I can not reproduce this issue in regular titanium views.\r\n\r\nI just hacked the hitTest code in TiUIView as shown below and got things to work again though I think the bug needs further investigation\r\n{code}\r\n //HACK. Do not use\r\n UIView* returnVal = [super hitTest:point withEvent:event];\r\n \r\n if (returnVal == nil && [self isUserInteractionEnabled]) {\r\n BOOL pointInside = [self pointInside:point withEvent:event];\r\n if (pointInside) {\r\n returnVal = self;\r\n }\r\n }\r\n return returnVal;\r\n{code}\r\n\r\n", "updateAuthor": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-02-10T17:16:34.000+0000", "updated": "2015-02-10T17:16:34.000+0000" }, { "id": "342793", "author": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "body": "So are you saying that if we add this hack that we shouldn't use to TiUIView that the game view object works in 64bit?", "updateAuthor": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-10T18:19:18.000+0000", "updated": "2015-02-10T18:19:18.000+0000" }, { "id": "342803", "author": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "body": "it does totally work. Okay, so why this code is not suitable for being swizzled into a production module?", "updateAuthor": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-10T18:47:42.000+0000", "updated": "2015-02-10T18:47:42.000+0000" }, { "id": "342839", "author": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "body": "@[~sophrinix]\r\nLike I said, this is just a workaround. The real problem is trying to find out why exactly hitTest returns nil. The workaround just covers the problem doesn't solve it. \r\n\r\nIf I had to use the workaround, I would not put it in the TiUIView class but in the GameView class (CoLanicaPlatinoGameView.m). That way the side effects if any would be localized.", "updateAuthor": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-02-10T21:39:46.000+0000", "updated": "2015-02-10T21:39:46.000+0000" }, { "id": "402832", "author": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "body": "this ticket can be closed. Platino isn't relevant anymore ( unless you happen to be named john or possibly peach). I can't prove that this is an issue outside of the platino codebase. ", "updateAuthor": { "name": "sophrinix", "key": "sophrinix", "displayName": "Andrew McElroy", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-12-07T03:19:47.000+0000", "updated": "2016-12-07T03:19:47.000+0000" }, { "id": "404619", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing per Andrew's comment above.", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-01-14T23:30:53.000+0000", "updated": "2017-01-14T23:30:53.000+0000" } ], "maxResults": 12, "total": 12, "startAt": 0 } } }