Hello,

Reproducing the bug: instantiate and add a GLSurface, then set the
interrupted status of your UI thread, and then use removeView to
detach the GLSurface.

To be brief, I think I found a bug, because GLSurfaceView.GLThread
uses the following pattern in its requestExitAndWait() method:

while (!mExited) {
      try {
           sObject.wait();
        } catch (InterruptedException ex) {
           Thread.currentThread().interrupt();
        }
     }

requestExitAndWait() is called by the UI thread when you detach your
GLSurface. If your UI thread already has interrupted() status for some
reason (e.g. someone handled an interrupt via
currentThread().interrupt()), then the Android code will cause an
infinite loop, because sObject.wait() will never release the sObject
monitor (due to the exception handler), and thus the GL thread will
never be able to set mExited to true.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to