tags:

views:

172

answers:

0

What a title, I know but thats exactly what it is.

This issue is happening on Android 1.6 so it might already been fixed. Just as per documentation i have implemented my GLSurfaceView as GameGLSurfaceView and overridden public boolean onTouchEvent(final MotionEvent event) method as so.

/**
 * Capture touch event and delegate it to our renderer
 */
public boolean onTouchEvent(final MotionEvent event) {
    // This method will be called on the rendering thread
    Log.i(TAG, "GOT EVENT : "+event.getAction());
    //mRenderer.onTouchEvent(event);
    queueEvent(new Runnable(){
        public void run() {
            mRenderer.onTouchEvent(event);
    }});
    return true;
}

and in my renderer I simply print that I received the event.

    06-09 15:16:37.456: INFO/GameSurfaceView(14749): GOT EVENT : 0
06-09 15:16:37.466: INFO/GameSurfaceView(14749): GOT EVENT : 2
06-09 15:16:37.486: DEBUG/com.fivebrothers.engine.scene.AbstractRenderer(14749): RECIVED EVENT : 2
06-09 15:16:37.486: DEBUG/com.fivebrothers.engine.scene.AbstractRenderer(14749): RECIVED EVENT : 2
06-09 15:16:37.506: INFO/GameSurfaceView(14749): GOT EVENT : 2
06-09 15:16:37.506: INFO/GameSurfaceView(14749): GOT EVENT : 1
06-09 15:16:37.566: DEBUG/com.fivebrothers.engine.scene.AbstractRenderer(14749): RECIVED EVENT : 1
06-09 15:16:37.566: DEBUG/com.fivebrothers.engine.scene.AbstractRenderer(14749): RECIVED EVENT : 1

As you can see we have never recived event that MotionEvent.ACTION_DOWN have fired. So I really don't know what might be the problem here.

One solution I have found is to call directly as so

       /**
 * Capture touch event and delegate it to our renderer
 */
public boolean onTouchEvent(final MotionEvent event) {  
    return mRenderer.onTouchEvent(event);
}

this does work but is it correct ?