aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libui_sdl/main.cpp')
-rw-r--r--src/libui_sdl/main.cpp29
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;