I've run into an issue where my OnTouchEvent is causing a keyDispatchingTimedOut.
I've timed it via System.Environment.TickCount, and I'm spending ~32ms handing it -- but, Android tells me that I've been handing an event for over 5 seconds. The traces.txt file is no help. Do I need to "spin the message loop" or something? I'm wondering if I'm blocking an event somehow, or if I need to add another override to my Activity? I/ TestApp (16439): Enter DoHandleEvent I/TestApp (16439): Exit DoHandleEvent - 32 milliseconds D/AlarmManager( 299): Triggered Alarm 4099b6b8 ELAPSED_REALTIME_WAKEUP IntentSender{4120d5d8: PendingIntentRecord{4099fb48 com.google.android.gsf roadcastIntent}} D/AlarmManager( 299): Added alarm Alarm{4149e420 type 2 com.google.android.gsf} type:ELAPSED_REALTIME_WAKEUP when: After 0h:1m:0.0s D/AlarmManager( 299): Removed alarm Alarm{4149e420 type 2 com.google.android.gsf} type:ELAPSED_REALTIME_WAKEUP D/AlarmManager( 299): Added alarm Alarm{41003da0 type 2 com.google.android.gsf} type:ELAPSED_REALTIME_WAKEUP when: After 0h:14m:59.0s I/InputDispatcher( 299): Application is not responding: Window{4089b8c0 TestAppDroid.TestAppDroid/TestAppdroid.TestAppActivity paused=false}. 5004.6ms since event, 5004.2ms since wait started I/Process ( 299): Sending signal. PID: 16439 SIG: 3 I/dalvikvm(16439): threadid=4: reacting to signal 3 I/WindowManager( 299): Input event dispatching timed out sending to TestAppDroid.TestAppDroid/TestAppdroid.TestAppActivity void DoHandleEvent(PaintingView view, float[] bbx) { Log.Info("TestApp", "Enter DoHandleEvent"); Int32 time = System.Environment.TickCount; view.SetBBX(bbx); view.Render(); // View is AndroidGameView - Render does what you think it does time = System.Environment.TickCount - time; Log.Info("TestApp", "Exit DoHandleEvent - " + time.ToString() + " milliseconds"); } public override bool OnTouchEvent(MotionEvent e) { bool fRet = false; try { switch ((int)e.Action) { case MotionEvent.ActionPointer2Up: mode = 0; // pan fRet = true; break; case MotionEvent.ActionPointer2Down: mode = 1; // zoom distance = spacing(e); fRet = true; break; case (int)MotionEventActions.Down: mode = 0; startX = e.RawX; startY = e.RawY; fRet = true; break; case (int)MotionEventActions.Move: float x = e.RawX; float y = e.RawY; float scrollByX = x - startX; float scrollByY = y - startY; startX = x; startY = y; // convert pixel to world if (null != glView_) { if (0 == mode) { float pdx = (glView_.GetBBX()[2] - glView_.GetBBX()[0]) / (float)glView_.Size.Width; float pdy = (glView_.GetBBX()[3] - glView_.GetBBX()[1]) / (float)glView_.Size.Height; scrollByX *= pdx; scrollByY *= pdy; float[] arBBX = new float[4]; glView_.GetRequestBBX().CopyTo(arBBX, 0); arBBX[0] -= scrollByX; arBBX[1] += scrollByY; arBBX[2] -= scrollByX; arBBX[3] += scrollByY; DoHandleEvent(glView_, arBBX); } else { float newDistance = spacing(e); if (Math.Abs(newDistance - distance) > 10.0) { float dv = newDistance / distance; distance = newDistance; float[] arBBX = new float[4]; glView_.GetRequestBBX(arBBX); float dx = arBBX[2] - arBBX[0]; float dy = arBBX[3] - arBBX[1]; dx = dx - (dx * dv); dy = dy - (dy * dv); arBBX[0] = arBBX[0] - dx; arBBX[1] = arBBX[1] - dy; arBBX[2] = arBBX[2] + dx; arBBX[3] = arBBX[3] + dy; DoHandleEvent(glView_, arBBX); } } } fRet = true; break; } } catch (System.Exception ex) { Log.Info("TestApp", "OnTouchEvent: " + ex.Message); } finally { } return fRet; }
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Monodroid mailing list Monodroid@lists.ximian.com UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid