emscripten-core / emscripten-core/emscripten

Offscreen Canvas Never Refreshes

Open
#17,816 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
27.6k
Forks
3.6k
Avg merge
1d 1h
Merged PRs (30d)
105

Description

I don't know if this is a bug or if it is just me. If this isn't the place for a question like this please give the right link.

I am using an OffScreen canvas on PThreads. I transfered the canvas to a PThread and attempted to draw frames to the canvas.

The canvas is always blank, unless I pause the thread in the debugger, and then I see it draw.

I have tried drawing in two different ways.

1. Using GLES2
2. Grabbing the canvas and drawing via JS.

In both cases I get the same result. Ideally I would love to use way 2, because all I need to do is draw a bunch of argb values to a canvas in quick succession, and the complexity of GLES2 seems like overkill.

I haven't found any examples of someone doing 2, I felt my way a little bit. If it is flawed please let me know.

Here is a small segment of code using way 1:

```
//Super Class QueueWorker.h
void Start() {
pthread_attr_t attr;

pthread_attr_init(&attr);
PreStart(&attr); //Through subclass and function pointer calls method Prestart below in EmscriptenCanvasWorker
pthread_create(&_pThread, &attr, &threadCallback, this);
pthread_attr_destroy(&attr);
}


//EmscriptenCanvasWorker.cpp
void ScummWeb::WebFrontEnd::Wasm::Emscripten::EmscriptenCanvasWorker::Prestart(char *canvasName, pthread_attr_t *attr) { //This is run on the main thread once.
emscripten_pthread_attr_settransferredcanvases(attr, "#canvas");
}

//Called once by worker thread at startup
void ScummWeb::WebFrontEnd::Wasm::Emscripten::EmscriptenCanvasWorker::OnThreadStart(char *canvasName) {
EmscriptenWebGLContextAttributes glAttr;
emscripten_webgl_init_context_attributes(&glAttr);
glAttr.explicitSwapControl = EM_TRUE;
glAttr.proxyContextToMainThread = EMSCRIPTEN_WEBGL_CONTEXT_PROXY_DISALLOW;
ctx = emscripten_webgl_create_context("#canvas", &glAttr);
emscripten_webgl_make_context_current(ctx);
}

//Called on worker thread whenever there is something to draw. The real system actually provides something useful to draw:
void ScummWeb::WebFrontEnd::Wasm::Emscripten::EmscriptenCanvasWorker::DrawToCanvas(ScummWeb::WebFrontEnd::Wasm::CanvasCallbackData *drawToCanvas, int drawingAreaWidth, int drawingAreaHeight) {
double color = 0;
for (int i = 0; i < 100; ++i) {
color += 0.01;
glClearColor(color, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
EMSCRIPTEN_RESULT r = emscripten_webgl_commit_frame();
assert(r == EMSCRIPTEN_RESULT_SUCCESS);

double now = emscripten_get_now();
while (emscripten_get_now() - now < 16) /*no-op*/
;
}
}

```

And also a small section of code using way 2:

```
void ScummWeb::WebFrontEnd::Wasm::Emscripten::EmscriptenCanvasWorker::OnThreadStart(char* canvasName) {
EM_ASM(
const canvas = findCanvasEventTarget("#canvas").offscreenCanvas;
ScummWebModule['offScreenCanvas'] = canvas;
ScummWebModule['imageData']= canvas.getContext('2d').createImageData(320, 200);
);
}

void ScummWeb::WebFrontEnd::Wasm::Emscripten::EmscriptenCanvasWorker::DrawToCanvas(ScummWeb::WebFrontEnd::Wasm::CanvasCallbackData *drawToCanvas, int drawingAreaWidth, int drawingAreaHeight) {
EM_ASM(
{
const data = $0;
const size = $1;
const lowestIndex = $2;

const imageData = ScummWebModule['imageData'];
const ctx = ScummWebModule['offScreenCanvas'].getContext('2d');

for (let i = lowestIndex; i < lowestIndex + size; i++) {
imageData.data[i] = HEAPU8[data + i];
}

ctx.putImageData(imageData, 0, 0);

},
drawToCanvas->data, drawToCanvas->size, drawToCanvas->lowestIndex);
}

```

I have created a very cut down example here: https://github.com/alayGit/DummyEmscriptenCanvasForumExample

Please include the following in your bug report:

**Version of emscripten/emsdk:** 3.1.17
Please include the output `emcc -v` here

C:\scumm\ScummVmBrowser\Emscripten7ZCompression>build.bat

C:\scumm\ScummVmBrowser\Emscripten7ZCompression>echo on

C:\scumm\ScummVmBrowser\Emscripten7ZCompression>call "C:\emsdk\emsdk_env.bat"
Setting environment variables:
Clearing existing environment variable: EMSDK_PY
"C:/emsdk/upstream/bin\clang++.exe" -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=17 -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=C:\emsdk\upstream\emscripten\cache\sysroot -Xclang -iwithsysroot/include\compat -O0 -g3 -I..\..\ExternalLibraries\include\msgpackcpp -pthread -v -matomics -mbulk-memory EmscriptenCanvasWorker.cpp -c -o C:\Users\andre\AppData\Local\Temp\emscripten_temp_pmtr8d_v\EmscriptenCanvasWorker_0.o
clang version 15.0.0 (https://github.com/llvm/llvm-project 17e4c217b66305e60657a48f10fe3c428c2fe4d2)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:\emsdk\upstream\bin
(in-process)
"C:\\emsdk\\upstream\\bin\\clang++.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name EmscriptenCanvasWorker.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +atomics -target-feature +bulk-memory -target-feature +mutable-globals -target-feature +sign-ext -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v "-fcoverage-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -resource-dir "C:\\emsdk\\upstream\\lib\\clang\\15.0.0" -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=3 -D __EMSCRIPTEN_minor__=1 -D __EMSCRIPTEN_tiny__=17 -I "..\\..\\ExternalLibraries\\include\\msgpackcpp" -isysroot "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\lib\\clang\\15.0.0\\include" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include" -O0 -Werror=implicit-function-declaration -fdeprecated-macro "-fdebug-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -ferror-limit 19 -fmessage-length=120 -fvisibility default -pthread -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/SDL "-iwithsysroot/include\\compat" -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o "C:\\Users\\andre\\AppData\\Local\\Temp\\emscripten_temp_pmtr8d_v\\EmscriptenCanvasWorker_0.o" -x c++ EmscriptenCanvasWorker.cpp
clang -cc1 version 15.0.0 based upon LLVM 15.0.0git default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
..\..\ExternalLibraries\include\msgpackcpp
C:\emsdk\upstream\emscripten\cache\sysroot/include/SDL
C:\emsdk\upstream\emscripten\cache\sysroot/include\compat
C:\emsdk\upstream\emscripten\cache\sysroot/include/c++/v1
C:\emsdk\upstream\lib\clang\15.0.0\include
C:\emsdk\upstream\emscripten\cache\sysroot/include
End of search list.
In file included from EmscriptenCanvasWorker.cpp:1:
In file included from ./EmscriptenCanvasWorker.h:1:
In file included from ./../JSWasm/CanvasWorker.h:2:
./../JSWasm/../MessagePackWrapper/UnmanagedMessagePackWrapper.h:2:66: warning: extra tokens at end of #include directive
[-Wextra-tokens]
#include "..\..\ExternalLibraries\include\msgpackcpp\msgpack.hpp";
^
//
1 warning generated.
"C:/emsdk/upstream/bin\clang++.exe" -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=17 -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=C:\emsdk\upstream\emscripten\cache\sysroot -Xclang -iwithsysroot/include\compat -O0 -g3 -I..\..\ExternalLibraries\include\msgpackcpp -pthread -v -matomics -mbulk-memory EmscriptenProcessGameMessages.cpp -c -o C:\Users\andre\AppData\Local\Temp\emscripten_temp_pmtr8d_v\EmscriptenProcessGameMessages_1.o
clang version 15.0.0 (https://github.com/llvm/llvm-project 17e4c217b66305e60657a48f10fe3c428c2fe4d2)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:\emsdk\upstream\bin
(in-process)
"C:\\emsdk\\upstream\\bin\\clang++.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name EmscriptenProcessGameMessages.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +atomics -target-feature +bulk-memory -target-feature +mutable-globals -target-feature +sign-ext -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v "-fcoverage-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -resource-dir "C:\\emsdk\\upstream\\lib\\clang\\15.0.0" -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=3 -D __EMSCRIPTEN_minor__=1 -D __EMSCRIPTEN_tiny__=17 -I "..\\..\\ExternalLibraries\\include\\msgpackcpp" -isysroot "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\lib\\clang\\15.0.0\\include" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include" -O0 -Werror=implicit-function-declaration -fdeprecated-macro "-fdebug-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -ferror-limit 19 -fmessage-length=120 -fvisibility default -pthread -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/SDL "-iwithsysroot/include\\compat" -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o "C:\\Users\\andre\\AppData\\Local\\Temp\\emscripten_temp_pmtr8d_v\\EmscriptenProcessGameMessages_1.o" -x c++ EmscriptenProcessGameMessages.cpp
clang -cc1 version 15.0.0 based upon LLVM 15.0.0git default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
..\..\ExternalLibraries\include\msgpackcpp
C:\emsdk\upstream\emscripten\cache\sysroot/include/SDL
C:\emsdk\upstream\emscripten\cache\sysroot/include\compat
C:\emsdk\upstream\emscripten\cache\sysroot/include/c++/v1
C:\emsdk\upstream\lib\clang\15.0.0\include
C:\emsdk\upstream\emscripten\cache\sysroot/include
End of search list.
In file included from EmscriptenProcessGameMessages.cpp:4:
In file included from ./EmscriptenProcessGameMessages.h:6:
In file included from ./../JSWasm/ProcessGameMessages.h:6:
./../JSWasm/../MessagePackWrapper/UnmanagedMessagePackWrapper.h:2:66: warning: extra tokens at end of #include directive
[-Wextra-tokens]
#include "..\..\ExternalLibraries\include\msgpackcpp\msgpack.hpp";
^
//
1 warning generated.
"C:/emsdk/upstream/bin\clang++.exe" -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=17 -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=C:\emsdk\upstream\emscripten\cache\sysroot -Xclang -iwithsysroot/include\compat -O0 -g3 -I..\..\ExternalLibraries\include\msgpackcpp -pthread -v -matomics -mbulk-memory ..\JSWasm\ProcessGameMessages.cpp -c -o C:\Users\andre\AppData\Local\Temp\emscripten_temp_pmtr8d_v\ProcessGameMessages_2.o
clang version 15.0.0 (https://github.com/llvm/llvm-project 17e4c217b66305e60657a48f10fe3c428c2fe4d2)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:\emsdk\upstream\bin
(in-process)
"C:\\emsdk\\upstream\\bin\\clang++.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name ProcessGameMessages.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +atomics -target-feature +bulk-memory -target-feature +mutable-globals -target-feature +sign-ext -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v "-fcoverage-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -resource-dir "C:\\emsdk\\upstream\\lib\\clang\\15.0.0" -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=3 -D __EMSCRIPTEN_minor__=1 -D __EMSCRIPTEN_tiny__=17 -I "..\\..\\ExternalLibraries\\include\\msgpackcpp" -isysroot "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\lib\\clang\\15.0.0\\include" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include" -O0 -Werror=implicit-function-declaration -fdeprecated-macro "-fdebug-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -ferror-limit 19 -fmessage-length=120 -fvisibility default -pthread -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/SDL "-iwithsysroot/include\\compat" -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o "C:\\Users\\andre\\AppData\\Local\\Temp\\emscripten_temp_pmtr8d_v\\ProcessGameMessages_2.o" -x c++ "..\\JSWasm\\ProcessGameMessages.cpp"
clang -cc1 version 15.0.0 based upon LLVM 15.0.0git default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
..\..\ExternalLibraries\include\msgpackcpp
C:\emsdk\upstream\emscripten\cache\sysroot/include/SDL
C:\emsdk\upstream\emscripten\cache\sysroot/include\compat
C:\emsdk\upstream\emscripten\cache\sysroot/include/c++/v1
C:\emsdk\upstream\lib\clang\15.0.0\include
C:\emsdk\upstream\emscripten\cache\sysroot/include
End of search list.
In file included from ..\JSWasm\ProcessGameMessages.cpp:1:
In file included from ..\JSWasm/ProcessGameMessages.h:6:
..\JSWasm/../MessagePackWrapper/UnmanagedMessagePackWrapper.h:2:66: warning: extra tokens at end of #include directive
[-Wextra-tokens]
#include "..\..\ExternalLibraries\include\msgpackcpp\msgpack.hpp";
^
//
1 warning generated.
"C:/emsdk/upstream/bin\clang++.exe" -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=17 -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=C:\emsdk\upstream\emscripten\cache\sysroot -Xclang -iwithsysroot/include\compat -O0 -g3 -I..\..\ExternalLibraries\include\msgpackcpp -pthread -v -matomics -mbulk-memory ..\JSWasm\CanvasWorker.cpp -c -o C:\Users\andre\AppData\Local\Temp\emscripten_temp_pmtr8d_v\CanvasWorker_3.o
clang version 15.0.0 (https://github.com/llvm/llvm-project 17e4c217b66305e60657a48f10fe3c428c2fe4d2)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:\emsdk\upstream\bin
(in-process)
"C:\\emsdk\\upstream\\bin\\clang++.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CanvasWorker.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +atomics -target-feature +bulk-memory -target-feature +mutable-globals -target-feature +sign-ext -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v "-fcoverage-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -resource-dir "C:\\emsdk\\upstream\\lib\\clang\\15.0.0" -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=3 -D __EMSCRIPTEN_minor__=1 -D __EMSCRIPTEN_tiny__=17 -I "..\\..\\ExternalLibraries\\include\\msgpackcpp" -isysroot "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\lib\\clang\\15.0.0\\include" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include" -O0 -Werror=implicit-function-declaration -fdeprecated-macro "-fdebug-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -ferror-limit 19 -fmessage-length=120 -fvisibility default -pthread -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/SDL "-iwithsysroot/include\\compat" -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o "C:\\Users\\andre\\AppData\\Local\\Temp\\emscripten_temp_pmtr8d_v\\CanvasWorker_3.o" -x c++ "..\\JSWasm\\CanvasWorker.cpp"
clang -cc1 version 15.0.0 based upon LLVM 15.0.0git default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
..\..\ExternalLibraries\include\msgpackcpp
C:\emsdk\upstream\emscripten\cache\sysroot/include/SDL
C:\emsdk\upstream\emscripten\cache\sysroot/include\compat
C:\emsdk\upstream\emscripten\cache\sysroot/include/c++/v1
C:\emsdk\upstream\lib\clang\15.0.0\include
C:\emsdk\upstream\emscripten\cache\sysroot/include
End of search list.
..\JSWasm\CanvasWorker.cpp:1:9: warning: #pragma once in main file [-Wpragma-once-outside-header]
#pragma once
^
In file included from ..\JSWasm\CanvasWorker.cpp:2:
In file included from ..\JSWasm/CanvasWorker.h:2:
..\JSWasm/../MessagePackWrapper/UnmanagedMessagePackWrapper.h:2:66: warning: extra tokens at end of #include directive
[-Wextra-tokens]
#include "..\..\ExternalLibraries\include\msgpackcpp\msgpack.hpp";
^
//
2 warnings generated.
"C:/emsdk/upstream/bin\clang++.exe" -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=17 -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=C:\emsdk\upstream\emscripten\cache\sysroot -Xclang -iwithsysroot/include\compat -O0 -g3 -I..\..\ExternalLibraries\include\msgpackcpp -pthread -v -matomics -mbulk-memory ..\JSWasm\GameMessageQueueWorker.cpp -c -o C:\Users\andre\AppData\Local\Temp\emscripten_temp_pmtr8d_v\GameMessageQueueWorker_4.o
clang version 15.0.0 (https://github.com/llvm/llvm-project 17e4c217b66305e60657a48f10fe3c428c2fe4d2)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:\emsdk\upstream\bin
(in-process)
"C:\\emsdk\\upstream\\bin\\clang++.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name GameMessageQueueWorker.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +atomics -target-feature +bulk-memory -target-feature +mutable-globals -target-feature +sign-ext -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v "-fcoverage-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -resource-dir "C:\\emsdk\\upstream\\lib\\clang\\15.0.0" -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=3 -D __EMSCRIPTEN_minor__=1 -D __EMSCRIPTEN_tiny__=17 -I "..\\..\\ExternalLibraries\\include\\msgpackcpp" -isysroot "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\lib\\clang\\15.0.0\\include" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include" -O0 -Werror=implicit-function-declaration -fdeprecated-macro "-fdebug-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -ferror-limit 19 -fmessage-length=120 -fvisibility default -pthread -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/SDL "-iwithsysroot/include\\compat" -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o "C:\\Users\\andre\\AppData\\Local\\Temp\\emscripten_temp_pmtr8d_v\\GameMessageQueueWorker_4.o" -x c++ "..\\JSWasm\\GameMessageQueueWorker.cpp"
clang -cc1 version 15.0.0 based upon LLVM 15.0.0git default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
..\..\ExternalLibraries\include\msgpackcpp
C:\emsdk\upstream\emscripten\cache\sysroot/include/SDL
C:\emsdk\upstream\emscripten\cache\sysroot/include\compat
C:\emsdk\upstream\emscripten\cache\sysroot/include/c++/v1
C:\emsdk\upstream\lib\clang\15.0.0\include
C:\emsdk\upstream\emscripten\cache\sysroot/include
End of search list.
In file included from ..\JSWasm\GameMessageQueueWorker.cpp:1:
In file included from ..\JSWasm/GameMessageQueueWorker.h:2:
In file included from ..\JSWasm/QueueWorker.h:4:
In file included from ..\JSWasm/Helpers.h:2:
..\JSWasm/../MessagePackWrapper/UnmanagedMessagePackWrapper.h:2:66: warning: extra tokens at end of #include directive
[-Wextra-tokens]
#include "..\..\ExternalLibraries\include\msgpackcpp\msgpack.hpp";
^
//
1 warning generated.
"C:/emsdk/upstream/bin\clang++.exe" -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=17 -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=C:\emsdk\upstream\emscripten\cache\sysroot -Xclang -iwithsysroot/include\compat -O0 -g3 -I..\..\ExternalLibraries\include\msgpackcpp -pthread -v -matomics -mbulk-memory ..\JSWasm\ImageCacheManagerWorker.cpp -c -o C:\Users\andre\AppData\Local\Temp\emscripten_temp_pmtr8d_v\ImageCacheManagerWorker_5.o
clang version 15.0.0 (https://github.com/llvm/llvm-project 17e4c217b66305e60657a48f10fe3c428c2fe4d2)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:\emsdk\upstream\bin
(in-process)
"C:\\emsdk\\upstream\\bin\\clang++.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name ImageCacheManagerWorker.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +atomics -target-feature +bulk-memory -target-feature +mutable-globals -target-feature +sign-ext -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v "-fcoverage-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -resource-dir "C:\\emsdk\\upstream\\lib\\clang\\15.0.0" -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=3 -D __EMSCRIPTEN_minor__=1 -D __EMSCRIPTEN_tiny__=17 -I "..\\..\\ExternalLibraries\\include\\msgpackcpp" -isysroot "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\lib\\clang\\15.0.0\\include" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include" -O0 -Werror=implicit-function-declaration -fdeprecated-macro "-fdebug-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -ferror-limit 19 -fmessage-length=120 -fvisibility default -pthread -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/SDL "-iwithsysroot/include\\compat" -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o "C:\\Users\\andre\\AppData\\Local\\Temp\\emscripten_temp_pmtr8d_v\\ImageCacheManagerWorker_5.o" -x c++ "..\\JSWasm\\ImageCacheManagerWorker.cpp"
clang -cc1 version 15.0.0 based upon LLVM 15.0.0git default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
..\..\ExternalLibraries\include\msgpackcpp
C:\emsdk\upstream\emscripten\cache\sysroot/include/SDL
C:\emsdk\upstream\emscripten\cache\sysroot/include\compat
C:\emsdk\upstream\emscripten\cache\sysroot/include/c++/v1
C:\emsdk\upstream\lib\clang\15.0.0\include
C:\emsdk\upstream\emscripten\cache\sysroot/include
End of search list.
..\JSWasm\ImageCacheManagerWorker.cpp:1:9: warning: #pragma once in main file [-Wpragma-once-outside-header]
#pragma once
^
In file included from ..\JSWasm\ImageCacheManagerWorker.cpp:2:
In file included from ..\JSWasm/ImageCacheManagerWorker.h:2:
..\JSWasm/../MessagePackWrapper/UnmanagedMessagePackWrapper.h:2:66: warning: extra tokens at end of #include directive
[-Wextra-tokens]
#include "..\..\ExternalLibraries\include\msgpackcpp\msgpack.hpp";
^
//
2 warnings generated.
"C:/emsdk/upstream/bin\clang++.exe" -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=17 -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=C:\emsdk\upstream\emscripten\cache\sysroot -Xclang -iwithsysroot/include\compat -O0 -g3 -I..\..\ExternalLibraries\include\msgpackcpp -pthread -v -matomics -mbulk-memory ..\JSWasm\WorkersManager.cpp -c -o C:\Users\andre\AppData\Local\Temp\emscripten_temp_pmtr8d_v\WorkersManager_6.o
clang version 15.0.0 (https://github.com/llvm/llvm-project 17e4c217b66305e60657a48f10fe3c428c2fe4d2)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:\emsdk\upstream\bin
(in-process)
"C:\\emsdk\\upstream\\bin\\clang++.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name WorkersManager.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +atomics -target-feature +bulk-memory -target-feature +mutable-globals -target-feature +sign-ext -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v "-fcoverage-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -resource-dir "C:\\emsdk\\upstream\\lib\\clang\\15.0.0" -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=3 -D __EMSCRIPTEN_minor__=1 -D __EMSCRIPTEN_tiny__=17 -I "..\\..\\ExternalLibraries\\include\\msgpackcpp" -isysroot "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\lib\\clang\\15.0.0\\include" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include" -O0 -Werror=implicit-function-declaration -fdeprecated-macro "-fdebug-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -ferror-limit 19 -fmessage-length=120 -fvisibility default -pthread -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/SDL "-iwithsysroot/include\\compat" -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o "C:\\Users\\andre\\AppData\\Local\\Temp\\emscripten_temp_pmtr8d_v\\WorkersManager_6.o" -x c++ "..\\JSWasm\\WorkersManager.cpp"
clang -cc1 version 15.0.0 based upon LLVM 15.0.0git default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "C:\emsdk\upstream\emscripten\cache\sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
..\..\ExternalLibraries\include\msgpackcpp
C:\emsdk\upstream\emscripten\cache\sysroot/include/SDL
C:\emsdk\upstream\emscripten\cache\sysroot/include\compat
C:\emsdk\upstream\emscripten\cache\sysroot/include/c++/v1
C:\emsdk\upstream\lib\clang\15.0.0\include
C:\emsdk\upstream\emscripten\cache\sysroot/include
End of search list.
In file included from ..\JSWasm\WorkersManager.cpp:1:
In file included from ..\JSWasm/WorkersManager.h:2:
In file included from ..\JSWasm/CanvasWorker.h:2:
..\JSWasm/../MessagePackWrapper/UnmanagedMessagePackWrapper.h:2:66: warning: extra tokens at end of #include directive
[-Wextra-tokens]
#include "..\..\ExternalLibraries\include\msgpackcpp\msgpack.hpp";
^
//
1 warning generated.
"C:/emsdk/upstream/bin\clang++.exe" -target wasm32-unknown-emscripten -D__EMSCRIPTEN_SHARED_MEMORY__=1 -DEMSCRIPTEN -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=17 -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=C:\emsdk\upstream\emscripten\cache\sysroot -Xclang -iwithsysroot/include\compat -O0 -g3 -I..\..\ExternalLibraries\include\msgpackcpp -pthread -v -matomics -mbulk-memory ..\JSWasm\Helpers.cpp -c -o C:\Users\andre\AppData\Local\Temp\emscripten_temp_pmtr8d_v\Helpers_7.o
clang version 15.0.0 (https://github.com/llvm/llvm-project 17e4c217b66305e60657a48f10fe3c428c2fe4d2)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:\emsdk\upstream\bin
(in-process)
"C:\\emsdk\\upstream\\bin\\clang++.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name Helpers.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +atomics -target-feature +bulk-memory -target-feature +mutable-globals -target-feature +sign-ext -target-cpu generic -target-feature +atomics -target-feature +bulk-memory -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -v "-fcoverage-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -resource-dir "C:\\emsdk\\upstream\\lib\\clang\\15.0.0" -D __EMSCRIPTEN_SHARED_MEMORY__=1 -D EMSCRIPTEN -D __EMSCRIPTEN_major__=3 -D __EMSCRIPTEN_minor__=1 -D __EMSCRIPTEN_tiny__=17 -I "..\\..\\ExternalLibraries\\include\\msgpackcpp" -isysroot "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1" -internal-isystem "C:\\emsdk\\upstream\\lib\\clang\\15.0.0\\include" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten" -internal-isystem "C:\\emsdk\\upstream\\emscripten\\cache\\sysroot/include" -O0 -Werror=implicit-function-declaration -fdeprecated-macro "-fdebug-compilation-dir=C:\\scumm\\ScummVmBrowser\\Emscripten7ZCompression" -ferror-limit 19 -fmessage-length=120 -fvisibility default -pthread -fgnuc-version=4.2.1 -fcxx-exceptions -fignore-exceptions -fexceptions -fcolor-diagnostics -iwithsysroot/include/SDL "-iwithsysroot/include\\compat" -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o "C:\\Users\\andre\\AppData\\Local\\Temp\\emscripten_temp_pmtr8d_v\\Helpers_7.o" -x c++ "..\\JSWasm\\Helpers.cpp"
clang -cc1 version 15.0.0 based upon LLVM 15.0.0git default target x86_64-pc-windows-msvc

**Failing command line in full:**
em++ -O0 -g -I ..\..\ExternalLibraries\include\msgpackcpp ^
-o EmscriptenProcessGameMessages.js
EmscriptenCanvasWorker.cpp
EmscriptenProcessGameMessages.cpp
..\JSWasm\ProcessGameMessages.cpp
..\JSWasm\CanvasWorker.cpp
..\JSWasm\GameMessageQueueWorker.cpp
..\JSWasm\ImageCacheManagerWorker.cpp
..\JSWasm\WorkersManager.cpp
..\JSWasm\Helpers.cpp
..\JSWasm\ImageCacheManager.cpp
..\SevenZCompression\SevenZCompression.cpp
..\Lz4Compression\Lz4Compression.cpp
..\yEncoder\yEncoder.cpp
..\MessagePackWrapper\UnmanagedMessagePackWrapper.cpp
..\..\ExternalLibraries\source\7z\LzmaLib.c
..\..\ExternalLibraries\source\7z\Alloc.c
..\..\ExternalLibraries\source\7z\LzmaDec.c
..\..\ExternalLibraries\source\7z\LzmaEnc.c
..\..\ExternalLibraries\source\7z\LzFind.c
..\..\ExternalLibraries\source\lz4Source\lib\lz4.c
..\..\ExternalLibraries\source\msgpackcpp\msgpackNoBoost.cpp
-pthread -v -s MODULARIZE=1
--no-entry -s "EXPORTED_RUNTIME_METHODS='getValue', 'setValue', 'cwrap', 'ccall', 'printErr', 'EmVal'"
-s PTHREAD_POOL_SIZE=3 -s "EXPORT_NAME='ScummWebModule'" -s"LLD_REPORT_UNDEFINED" -s"TOTAL_MEMORY=1024MB"
-s OFFSCREENCANVAS_SUPPORT=1 --bind

**Full link command and output with `-v` appended:**
I am don't know how to provide this. Let me know the fastest way to get this to you guys if required

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.