diff options
Diffstat (limited to 'src/libui_sdl/main.cpp')
-rw-r--r-- | src/libui_sdl/main.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp index d892912..2705560 100644 --- a/src/libui_sdl/main.cpp +++ b/src/libui_sdl/main.cpp @@ -60,6 +60,7 @@ char* EmuDirectory; uiWindow* MainWindow; uiArea* MainDrawArea; +uiGLContext* GLContext; int WindowWidth, WindowHeight; @@ -392,14 +393,7 @@ void FeedMicInput() int EmuThreadFunc(void* burp) { - // TODO: fail gracefully, support older OpenGL, etc - uiGLContext* glctx = uiGLNewContext(uiControl(MainDrawArea), 4, 3); // haw haw haw - uiGLMakeContextCurrent(glctx); - - void* testor = uiGLGetProcAddress("glUseProgram"); - void* testor2 = uiGLGetProcAddress("glBindFramebuffer"); - printf("OPENGL: %p %p\n", testor, testor2); - + uiGLMakeContextCurrent(GLContext); NDS::Init(); MainScreenPos[0] = 0; @@ -407,7 +401,6 @@ int EmuThreadFunc(void* burp) MainScreenPos[2] = 0; AutoScreenSizing = 0; - ScreenDrawInited = false; Touching = false; KeyInputMask = 0xFFF; HotkeyMask = 0; @@ -440,6 +433,8 @@ int EmuThreadFunc(void* burp) { EmuStatus = 1; + uiGLMakeContextCurrent(GLContext); + SDL_JoystickUpdate(); if (Joystick) @@ -624,8 +619,6 @@ int EmuThreadFunc(void* burp) NDS::DeInit(); Platform::LAN_DeInit(); - uiGLFreeContext(glctx); - return 44203; } @@ -634,8 +627,8 @@ void OnAreaDraw(uiAreaHandler* handler, uiArea* area, uiAreaDrawParams* params) { if (!ScreenDrawInited) { - ScreenBitmap = uiDrawNewBitmap(params->Context, 256, 384); ScreenDrawInited = true; + ScreenBitmap = uiDrawNewBitmap(params->Context, 256, 384); } if (!ScreenBitmap) return; @@ -1981,6 +1974,7 @@ int main(int argc, char** argv) areahandler.KeyEvent = OnAreaKeyEvent; areahandler.Resize = OnAreaResize; + ScreenDrawInited = false; MainDrawArea = uiNewArea(&areahandler); uiWindowSetChild(MainWindow, uiControl(MainDrawArea)); uiControlSetMinSize(uiControl(MainDrawArea), 256, 384); @@ -2011,6 +2005,15 @@ int main(int argc, char** argv) OnSetScreenRotation(MenuItem_ScreenRot[ScreenRotation], MainWindow, (void*)&kScreenRot[ScreenRotation]); + // TODO: fail gracefully, support older OpenGL, etc + GLContext = uiGLNewContext(uiControl(MainDrawArea), 4, 3); // haw haw haw + uiGLMakeContextCurrent(GLContext); + + void* testor = uiGLGetProcAddress("glUseProgram"); + void* testor2 = uiGLGetProcAddress("glBindFramebuffer"); + printf("OPENGL: %p %p\n", testor, testor2); + uiGLMakeContextCurrent(NULL); + SDL_AudioSpec whatIwant, whatIget; memset(&whatIwant, 0, sizeof(SDL_AudioSpec)); whatIwant.freq = 47340; @@ -2092,6 +2095,8 @@ int main(int argc, char** argv) if (MicWavBuffer) delete[] MicWavBuffer; + uiGLFreeContext(GLContext); + Config::ScreenRotation = ScreenRotation; Config::ScreenGap = ScreenGap; Config::ScreenLayout = ScreenLayout; |