Browse Source

Fix wasm build after pugl update

Signed-off-by: falkTX <falktx@falktx.com>
pull/506/head
falkTX 6 months ago
parent
commit
d465c51d4b
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 42 additions and 24 deletions
  1. +3
    -1
      Makefile.base.mk
  2. +9
    -1
      cmake/DPF-plugin.cmake
  3. +30
    -22
      dgl/src/pugl-extra/wasm.c

+ 3
- 1
Makefile.base.mk View File

@@ -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 =


+ 9
- 1
cmake/DPF-plugin.cmake View File

@@ -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
$<$<BOOL:${EMSCRIPTEN}>:-sMIN_WEBGL_VERSION=3>
$<$<BOOL:${EMSCRIPTEN}>:-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()


+ 30
- 22
dgl/src/pugl-extra/wasm.c View File

@@ -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);
}

Loading…
Cancel
Save