From d465c51d4bd13166f112f459cb3a8181faac3793 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 10 Aug 2025 00:11:09 +0200 Subject: [PATCH] Fix wasm build after pugl update Signed-off-by: falkTX --- Makefile.base.mk | 4 ++- cmake/DPF-plugin.cmake | 10 +++++++- dgl/src/pugl-extra/wasm.c | 52 ++++++++++++++++++++++----------------- 3 files changed, 42 insertions(+), 24 deletions(-) diff --git a/Makefile.base.mk b/Makefile.base.mk index e03aca6c..7d4e3c78 100644 --- a/Makefile.base.mk +++ b/Makefile.base.mk @@ -543,8 +543,10 @@ else ifeq ($(WASM),true) OPENGL_FLAGS = ifeq ($(USE_GLES3),true) OPENGL_LIBS = -sMIN_WEBGL_VERSION=3 -sMAX_WEBGL_VERSION=3 -else +else ifeq ($(USE_GLES2),true) OPENGL_LIBS = -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 +else +OPENGL_LIBS = -sLEGACY_GL_EMULATION -sGL_UNSAFE_OPTS=0 endif else ifeq ($(WINDOWS),true) OPENGL_FLAGS = diff --git a/cmake/DPF-plugin.cmake b/cmake/DPF-plugin.cmake index 22490976..dc584e39 100644 --- a/cmake/DPF-plugin.cmake +++ b/cmake/DPF-plugin.cmake @@ -428,6 +428,7 @@ function(dpf__build_jack NAME HAS_UI FORCE_NATIVE_AUDIO_FALLBACK SKIP_NATIVE_AUD if(APPLE OR WIN32) target_compile_definitions("${NAME}" PUBLIC "HAVE_RTAUDIO") + elseif(EMSCRIPTEN) else() find_package(Threads) pkg_check_modules(ALSA "alsa") @@ -1146,6 +1147,11 @@ function(dpf__add_dgl_gles3 SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW) dpf__add_dgl_system_libs() target_link_libraries(dgl-gles3 PRIVATE dgl-system-libs) + target_link_options(dgl-gles2 + INTERFACE + $<$:-sMIN_WEBGL_VERSION=3> + $<$:-sMAX_WEBGL_VERSION=3> + ) add_library(dgl-gles3-definitions INTERFACE) target_compile_definitions(dgl-gles3-definitions @@ -1530,7 +1536,9 @@ endfunction() function(dpf__add_executable NAME) add_executable("${NAME}" ${ARGN}) dpf__set_target_defaults("${NAME}") - if(MINGW) + if(EMSCRIPTEN) + set_property(TARGET "${NAME}" PROPERTY SUFFIX ".html") + elseif(MINGW) target_link_libraries("${NAME}" PRIVATE "-static") endif() endfunction() diff --git a/dgl/src/pugl-extra/wasm.c b/dgl/src/pugl-extra/wasm.c index 0772befd..4aa31262 100644 --- a/dgl/src/pugl-extra/wasm.c +++ b/dgl/src/pugl-extra/wasm.c @@ -729,7 +729,8 @@ puglRealize(PuglView* const view) const char* const className = view->world->strings[PUGL_CLASS_NAME]; d_stdout("className is %s", className); - PuglViewSize defaultSize = view->sizeHints[PUGL_DEFAULT_SIZE]; + PuglPoint defaultPos = view->positionHints[PUGL_DEFAULT_POSITION]; + PuglArea defaultSize = view->sizeHints[PUGL_DEFAULT_SIZE]; if (!defaultSize.width || !defaultSize.height) { return PUGL_BAD_CONFIGURATION; } @@ -747,8 +748,8 @@ puglRealize(PuglView* const view) puglDispatchSimpleEvent(view, PUGL_REALIZE); PuglEvent event = {{PUGL_CONFIGURE, 0}}; - event.configure.x = view->defaultX; - event.configure.y = view->defaultY; + event.configure.x = defaultPos.x; + event.configure.y = defaultPos.y; event.configure.width = defaultSize.width; event.configure.height = defaultSize.height; puglDispatchEvent(view, &event); @@ -794,7 +795,7 @@ puglShow(PuglView* const view, PuglShowCommand) { view->impl->visible = true; view->impl->needsRepaint = true; - return puglPostRedisplay(view); + return puglObscureView(view); } PuglStatus @@ -884,15 +885,23 @@ puglUpdate(PuglWorld* const world, const double timeout) } PuglStatus -puglPostRedisplay(PuglView* const view) +puglObscureView(PuglView* const view) { view->impl->needsRepaint = true; return PUGL_SUCCESS; } PuglStatus -puglPostRedisplayRect(PuglView* const view, const PuglRect rect) +puglObscureRegion(PuglView* view, + const int x, + const int y, + const unsigned width, + const unsigned height) { + if (!puglIsValidPosition(x, y) || !puglIsValidSize(width, height)) { + return PUGL_BAD_PARAMETER; + } + view->impl->needsRepaint = true; return PUGL_FAILURE; } @@ -920,12 +929,10 @@ puglViewStringChanged(PuglView*, const PuglStringHint key, const char* const val PuglStatus puglSetSizeHint(PuglView* const view, const PuglSizeHint hint, - const PuglSpan width, - const PuglSpan height) + const unsigned width, + const unsigned height) { - view->sizeHints[hint].width = width; - view->sizeHints[hint].height = height; - return PUGL_SUCCESS; + return puglStoreSizeHint(view, hint, width, height); } static EM_BOOL @@ -1154,22 +1161,23 @@ puglSetTransientParent(PuglView* const view, const PuglNativeView parent) } PuglStatus -puglSetPosition(PuglView* const view, const int x, const int y) +puglSetPositionHint(PuglView* const view, + const PuglPositionHint hint, + const int x, + const int y) { - printf("TODO: %s %d\n", __func__, __LINE__); - - if (x > INT16_MAX || y > INT16_MAX) { + if (x <= INT16_MIN || x > INT16_MAX || y <= INT16_MIN || y > INT16_MAX) { return PUGL_BAD_PARAMETER; } - if (!view->impl->created) { - // Set defaults to be used when realized - view->defaultX = x; - view->defaultY = y; + view->positionHints[hint].x = (PuglCoord)x; + view->positionHints[hint].y = (PuglCoord)y; + + if (!view->impl->created || hint != PUGL_CURRENT_POSITION) { return PUGL_SUCCESS; } - view->lastConfigure.x = (PuglCoord)x; - view->lastConfigure.y = (PuglCoord)y; - return puglPostRedisplay(view); + view->lastConfigure.x = x; + view->lastConfigure.y = y; + return puglObscureView(view); }