Hi!
I run into a problem with
std::thread th1 (QFileDialog::getOpenFileContent, "*.*", onFileReady);
th1.join();
But in that case, it froze at the emscripten part in the openFileDialog function and no file dialogue was opened.
emscripten::val document = emscripten::val::global("document");
emscripten::val input = document.call<emscripten::val>("createElement", std::string("input"));
I got the error message at creating the input value.
Running on the main thread there is no error and works fine.
Any idea what could be the problem/solution here?
I got this error message:
worker.js onmessage() captured an uncaught exception: TypeError: Cannot read properties of undefined (reading 'createElement')
self.onmessage @ soffice.worker.js:207
soffice.worker.js:208 TypeError: Cannot read properties of undefined (reading 'createElement')
at methodCaller_emscripten$$val_$std$$string$ (eval at new_ (47933e67-c694-46fe-af70-91dc8b50859c:8694:27), <anonymous>:5:20)
at __emval_call_method (47933e67-c694-46fe-af70-91dc8b50859c:9267:14)
at emscripten::internal::MethodCaller<emscripten::val, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > >::call(emscripten::internal::_EM_VAL*, char const*, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> emscripten::internal::MethodCaller<emscripten::val, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > >::call(emscripten::internal::_EM_VAL*, char const*, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >&&) (val.h:278)
at emscripten::val emscripten::val::call<emscripten::val, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > >(char const*, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >&&) emscripten::val emscripten::val::call<emscripten::val, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > >(char const*, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >&&) const (val.h:498)
at QWasmLocalFileAccess::openFileDialog(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, QWasmLocalFileAccess::FileSelectMode, std::__2::function<void (qstdweb::FileList const&)> QWasmLocalFileAccess::openFileDialog(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, QWasmLocalFileAccess::FileSelectMode, std::__2::function<void (qstdweb::FileList const&)> const&) (qwasmlocalfileaccess.cpp:131)
at QWasmLocalFileAccess::openFiles(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, QWasmLocalFileAccess::FileSelectMode, std::__2::function<void (int)> const&, std::__2::function<char* (unsigned long long, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >)> const&, std::__2::function<void ()> QWasmLocalFileAccess::openFiles(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, QWasmLocalFileAccess::FileSelectMode, std::__2::function<void (int)> const&, std::__2::function<char* (unsigned long long, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >)> const&, std::__2::function<void ()> const&) (qwasmlocalfileaccess.cpp:156)
at QWasmLocalFileAccess::openFile(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, std::__2::function<void (bool)> const&, std::__2::function<char* (unsigned long long, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >)> const&, std::__2::function<void ()> QWasmLocalFileAccess::openFile(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, std::__2::function<void (bool)> const&, std::__2::function<char* (unsigned long long, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >)> const&, std::__2::function<void ()> const&) (qwasmlocalfileaccess.cpp:169)
at QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2::operator()() (qfiledialog.cpp:2444)
at decltype(std::__2::forward<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(fp)()) std::__2::__invoke<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> decltype(std::__2::forward<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(fp)()) std::__2::__invoke<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&) (type_traits:3694)
at void std::__2::__invoke_void_return_wrapper<void, true>::__call<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> void std::__2::__invoke_void_return_wrapper<void, true>::__call<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&) (__functional_base:348)worker.js onmessage() captured an uncaught exception: TypeError: Cannot read properties of undefined (reading 'createElement')
self.onmessage @ soffice.worker.js:207
soffice.worker.js:208 TypeError: Cannot read properties of undefined (reading 'createElement')
at methodCaller_emscripten$$val_$std$$string$ (eval at new_ (47933e67-c694-46fe-af70-91dc8b50859c:8694:27), <anonymous>:5:20)
at __emval_call_method (47933e67-c694-46fe-af70-91dc8b50859c:9267:14)
at emscripten::internal::MethodCaller<emscripten::val, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > >::call(emscripten::internal::_EM_VAL*, char const*, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> emscripten::internal::MethodCaller<emscripten::val, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > >::call(emscripten::internal::_EM_VAL*, char const*, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >&&) (val.h:278)
at emscripten::val emscripten::val::call<emscripten::val, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > >(char const*, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >&&) emscripten::val emscripten::val::call<emscripten::val, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > >(char const*, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >&&) const (val.h:498)
at QWasmLocalFileAccess::openFileDialog(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, QWasmLocalFileAccess::FileSelectMode, std::__2::function<void (qstdweb::FileList const&)> QWasmLocalFileAccess::openFileDialog(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, QWasmLocalFileAccess::FileSelectMode, std::__2::function<void (qstdweb::FileList const&)> const&) (qwasmlocalfileaccess.cpp:131)
at QWasmLocalFileAccess::openFiles(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, QWasmLocalFileAccess::FileSelectMode, std::__2::function<void (int)> const&, std::__2::function<char* (unsigned long long, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >)> const&, std::__2::function<void ()> QWasmLocalFileAccess::openFiles(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, QWasmLocalFileAccess::FileSelectMode, std::__2::function<void (int)> const&, std::__2::function<char* (unsigned long long, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >)> const&, std::__2::function<void ()> const&) (qwasmlocalfileaccess.cpp:156)
at QWasmLocalFileAccess::openFile(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, std::__2::function<void (bool)> const&, std::__2::function<char* (unsigned long long, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >)> const&, std::__2::function<void ()> QWasmLocalFileAccess::openFile(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, std::__2::function<void (bool)> const&, std::__2::function<char* (unsigned long long, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >)> const&, std::__2::function<void ()> const&) (qwasmlocalfileaccess.cpp:169)
at QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2::operator()() (qfiledialog.cpp:2444)
at decltype(std::__2::forward<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(fp)()) std::__2::__invoke<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> decltype(std::__2::forward<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(fp)()) std::__2::__invoke<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&) (type_traits:3694)
at void std::__2::__invoke_void_return_wrapper<void, true>::__call<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> void std::__2::__invoke_void_return_wrapper<void, true>::__call<QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&>(QFileDialog::getOpenFileContent(QString const&, std::__2::function<void (QString const&, QByteArray const&)> const&)::$_2&) (__functional_base:348)
Thanks in advance,
Balazs