emscripten-core / emscripten-core/emscripten
Offscreen Canvas Never Refreshes
- 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
Assessment
This issue has not been assessed yet.