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 [email protected] UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid
