Actually, the situation is worse, because this bug appears when you
start your rendering, too.

Details here as well:
http://stackoverflow.com/questions/11220572/handling-interruptedexception-while-waiting-for-an-exit-signal-bug-in-android


On Jun 28, 1:16 pm, Tamás Kovács <[email protected]> wrote:
> 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