aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl/libui
diff options
context:
space:
mode:
Diffstat (limited to 'src/libui_sdl/libui')
-rw-r--r--src/libui_sdl/libui/ui.h1
-rw-r--r--src/libui_sdl/libui/unix/gl.c5
-rw-r--r--src/libui_sdl/libui/windows/CMakeLists.txt2
-rw-r--r--src/libui_sdl/libui/windows/gl.cpp35
-rw-r--r--src/libui_sdl/libui/windows/window.cpp2
5 files changed, 43 insertions, 2 deletions
diff --git a/src/libui_sdl/libui/ui.h b/src/libui_sdl/libui/ui.h
index e15c127..03aef5d 100644
--- a/src/libui_sdl/libui/ui.h
+++ b/src/libui_sdl/libui/ui.h
@@ -620,6 +620,7 @@ _UI_EXTERN void *uiGLGetProcAddress(const char* proc);
_UI_EXTERN int uiGLGetFramebuffer(uiGLContext* ctx);
_UI_EXTERN float uiGLGetFramebufferScale(uiGLContext* ctx);
_UI_EXTERN void uiGLSwapBuffers(uiGLContext* ctx);
+_UI_EXTERN void uiGLSetVSync(int sync);
_UI_ENUM(uiModifiers) {
diff --git a/src/libui_sdl/libui/unix/gl.c b/src/libui_sdl/libui/unix/gl.c
index e1665ee..e15cf4f 100644
--- a/src/libui_sdl/libui/unix/gl.c
+++ b/src/libui_sdl/libui/unix/gl.c
@@ -193,6 +193,11 @@ void uiGLSwapBuffers(uiGLContext* ctx)
ctx->backbuffer = ctx->backbuffer ? 0 : 1;
}
+void uiGLSetVSync(int sync)
+{
+ // TODO
+}
+
void uiGLMakeContextCurrent(uiGLContext* ctx)
{
if (!ctx)
diff --git a/src/libui_sdl/libui/windows/CMakeLists.txt b/src/libui_sdl/libui/windows/CMakeLists.txt
index 9d5313a..24d4ad9 100644
--- a/src/libui_sdl/libui/windows/CMakeLists.txt
+++ b/src/libui_sdl/libui/windows/CMakeLists.txt
@@ -73,7 +73,7 @@ macro(_handle_static)
add_custom_command(
TARGET libui POST_BUILD
COMMAND
- ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:libui,BINARY_DIR>/CMakeFiles/libui.dir/windows/resources.rc.* ${_LIBUI_STATIC_RES}
+ ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:libui,BINARY_DIR>/CMakeFiles/libui.dir/windows/resources.rc.obj ${_LIBUI_STATIC_RES}
COMMENT "Copying libui.res")
endmacro()
diff --git a/src/libui_sdl/libui/windows/gl.cpp b/src/libui_sdl/libui/windows/gl.cpp
index c621721..07ef19b 100644
--- a/src/libui_sdl/libui/windows/gl.cpp
+++ b/src/libui_sdl/libui/windows/gl.cpp
@@ -3,6 +3,7 @@
#include "area.hpp"
#include <GL/gl.h>
+#include <GL/glext.h>
#include <GL/wglext.h>
struct uiGLContext
@@ -159,3 +160,37 @@ float uiGLGetFramebufferScale(uiGLContext* ctx)
// TODO
return 1;
}
+
+void uiGLSetVSync(int sync)
+{
+ static PFNWGLSWAPINTERVALEXTPROC _wglSwapIntervalEXT = NULL;
+ static bool symloaded = false;
+
+ if (!symloaded)
+ {
+ PFNGLGETSTRINGIPROC _glGetStringi = (PFNGLGETSTRINGIPROC)wglGetProcAddress("glGetStringi");
+ if (_glGetStringi == NULL) return;
+
+ GLint numext;
+ glGetIntegerv(GL_NUM_EXTENSIONS, &numext);
+
+ bool hasswapctrl = false;
+ for (GLint i = 0; i < numext; i++)
+ {
+ const char* ext = (const char*)_glGetStringi(GL_EXTENSIONS, i);
+ if (!stricmp(ext, "WGL_EXT_swap_control"))
+ {
+ hasswapctrl = true;
+ break;
+ }
+ }
+
+ if (hasswapctrl)
+ _wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)wglGetProcAddress("wglSwapIntervalEXT");
+
+ symloaded = true;
+ }
+
+ if (_wglSwapIntervalEXT)
+ _wglSwapIntervalEXT(sync);
+}
diff --git a/src/libui_sdl/libui/windows/window.cpp b/src/libui_sdl/libui/windows/window.cpp
index 18d1171..a8f7f23 100644
--- a/src/libui_sdl/libui/windows/window.cpp
+++ b/src/libui_sdl/libui/windows/window.cpp
@@ -95,7 +95,7 @@ static LRESULT CALLBACK windowWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA
// not a menu
if (lParam != 0)
break;
- if (HIWORD(wParam) != 0)
+ if (HIWORD(wParam) != 0 || LOWORD(wParam) <= IDCANCEL)
break;
runMenuEvent(LOWORD(wParam), uiWindow(w));
return 0;