Dialog in OpenGL Thread

  • Antworten:2
Daniel Jung
  • Forum-Beiträge: 4

30.04.2013, 23:55:33 via Website

Hallo liebe Community,

ich habe ein kleines Problem bei der Programmierung mit OpenGl unter Android: Ich will nach einem bestimmten Input-Event, das durch onTouchEvent(MotionEvent event) des OpenGL Renderers ausgelöst wird, einen Dialog öffnen. Was ich bereits herausgefunden habe ist, dass ich den Dialog aus dem UI-Thread starten muss, da es aus dem OpenGL Thread nicht möglich ist. Dazu benutze ich die Methode
1Activity.runOnUiThread(Runnable)
, wobei in dem Runnable-Objekt der Dialog erzeugt wird.
Beim ersten mal klappt der ganze Spaß auch, der Dialog wird ordnungsgemäß angezeigt. Sobald man den Dialog aber schließt, und er erneut geöffnet werden soll, erhalte ich den Fehler: E/libEGL(1664): call to OpenGL ES API with no current context (logged once per thread)
Gegoogelt habe ich den Fehler bereits und in meiner manifest.xml die Zeile "android:hardwareAccelerated="true"" hinzugefügt ... bringt jedoch garnichts.
Ich habe auch andere Methoden ausprobiert, den UI-Thread anzusprechen, jedoch bekomme ich bei allen anderen entweder den selben oder eben einen anderen Fehler.

Hier grob der Code:
1public class CDialog implements Runnable{
2 public void run() {
3 Dialog d = new Dialog(MainActivity._Activity);
4 ...
5 d.show();
6 }
7}
8
9public final class CView extends GLSurfaceView implements GLSurfaceView.Renderer{
10 public boolean onTouchEvent(MotionEvent event){
11 MainActivity._Activity.runOnUiThread(new CDialog(p)); //Die Activity, gespeichert als static in der Klasse MainActivity
12 return true;
13 }
14}
Ich hoffe, ihr könnt mir helfen, ich weiß nicht, was ich noch versuchen sollte!

MfG Daniel Jung

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.05.2013, 21:06:32 via App

Bei mir klappt es immer doch ich mache es ohne implements.
Etwa so:
1Runnable r =new Runnable({
2public void run()
3{
4//do your things
5}});
6
7Activity.runInUIThread(r);
Hoffentlich hilft dir das.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Daniel Jung
  • Forum-Beiträge: 4

01.05.2013, 21:27:50 via Website

hey sers,
danke mal für die antwort :)
habs natürlich mal ausprobiert, ergebnis is dasselbe, wieder der fehler call to OpenGL ES API with no current context (logged once per thread)
Das Starten des Threads und des Dialogs klappt ja, nur dann komt dieser Fehler und danach krieg ich von OpenGL nur noch ungültige Daten, was Position usw. betrifft :(

Antworten