From 8e5381fda25d5cfe3897266e4de2e04ef6e996ed Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Fri, 10 Apr 2026 23:49:29 +0200 Subject: [PATCH] Added callback for events. --- CMakeLists.txt | 1 + .../resources/icudtl.dat | Bin .../qtwebengine_devtools_resources.pak | Bin .../resources/qtwebengine_resources.pak | Bin .../resources/qtwebengine_resources_100p.pak | Bin .../resources/qtwebengine_resources_200p.pak | Bin .../resources/v8_context_snapshot.bin | Bin .../translations/qtwebengine_locales/am.pak | Bin .../translations/qtwebengine_locales/ar.pak | Bin .../translations/qtwebengine_locales/bg.pak | Bin .../translations/qtwebengine_locales/bn.pak | Bin .../translations/qtwebengine_locales/ca.pak | Bin .../translations/qtwebengine_locales/cs.pak | Bin .../translations/qtwebengine_locales/da.pak | Bin .../translations/qtwebengine_locales/de.pak | Bin .../translations/qtwebengine_locales/el.pak | Bin .../qtwebengine_locales/en-GB.pak | Bin .../qtwebengine_locales/en-US.pak | Bin .../qtwebengine_locales/es-419.pak | Bin .../translations/qtwebengine_locales/es.pak | Bin .../translations/qtwebengine_locales/et.pak | Bin .../translations/qtwebengine_locales/fa.pak | Bin .../translations/qtwebengine_locales/fi.pak | Bin .../translations/qtwebengine_locales/fil.pak | Bin .../translations/qtwebengine_locales/fr.pak | Bin .../translations/qtwebengine_locales/gu.pak | Bin .../translations/qtwebengine_locales/he.pak | Bin .../translations/qtwebengine_locales/hi.pak | Bin .../translations/qtwebengine_locales/hr.pak | Bin .../translations/qtwebengine_locales/hu.pak | Bin .../translations/qtwebengine_locales/id.pak | Bin .../translations/qtwebengine_locales/it.pak | Bin .../translations/qtwebengine_locales/ja.pak | Bin .../translations/qtwebengine_locales/kn.pak | Bin .../translations/qtwebengine_locales/ko.pak | Bin .../translations/qtwebengine_locales/lt.pak | Bin .../translations/qtwebengine_locales/lv.pak | Bin .../translations/qtwebengine_locales/ml.pak | Bin .../translations/qtwebengine_locales/mr.pak | Bin .../translations/qtwebengine_locales/ms.pak | Bin .../translations/qtwebengine_locales/nb.pak | Bin .../translations/qtwebengine_locales/nl.pak | Bin .../translations/qtwebengine_locales/pl.pak | Bin .../qtwebengine_locales/pt-BR.pak | Bin .../qtwebengine_locales/pt-PT.pak | Bin .../translations/qtwebengine_locales/ro.pak | Bin .../translations/qtwebengine_locales/ru.pak | Bin .../translations/qtwebengine_locales/sk.pak | Bin .../translations/qtwebengine_locales/sl.pak | Bin .../translations/qtwebengine_locales/sr.pak | Bin .../translations/qtwebengine_locales/sv.pak | Bin .../translations/qtwebengine_locales/sw.pak | Bin .../translations/qtwebengine_locales/ta.pak | Bin .../translations/qtwebengine_locales/te.pak | Bin .../translations/qtwebengine_locales/th.pak | Bin .../translations/qtwebengine_locales/tr.pak | Bin .../translations/qtwebengine_locales/uk.pak | Bin .../translations/qtwebengine_locales/vi.pak | Bin .../qtwebengine_locales/zh-CN.pak | Bin .../qtwebengine_locales/zh-TW.pak | Bin memqueue.cpp | 2 + memqueue.h | 72 ++++++++++++ rktwebview.cpp | 109 ++++++++++++------ rktwebview_test.cpp | 2 +- 64 files changed, 148 insertions(+), 38 deletions(-) rename lib/{windows/x86_64 => windows-x86_64}/resources/icudtl.dat (100%) rename lib/{windows/x86_64 => windows-x86_64}/resources/qtwebengine_devtools_resources.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/resources/qtwebengine_resources.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/resources/qtwebengine_resources_100p.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/resources/qtwebengine_resources_200p.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/resources/v8_context_snapshot.bin (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/am.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ar.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/bg.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/bn.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ca.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/cs.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/da.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/de.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/el.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/en-GB.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/en-US.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/es-419.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/es.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/et.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/fa.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/fi.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/fil.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/fr.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/gu.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/he.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/hi.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/hr.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/hu.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/id.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/it.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ja.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/kn.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ko.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/lt.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/lv.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ml.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/mr.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ms.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/nb.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/nl.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/pl.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/pt-BR.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/pt-PT.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ro.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ru.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/sk.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/sl.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/sr.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/sv.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/sw.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/ta.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/te.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/th.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/tr.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/uk.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/vi.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/zh-CN.pak (100%) rename lib/{windows/x86_64 => windows-x86_64}/translations/qtwebengine_locales/zh-TW.pak (100%) create mode 100644 memqueue.cpp create mode 100644 memqueue.h diff --git a/CMakeLists.txt b/CMakeLists.txt index e1d4bb3..8d837c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,7 @@ add_library(rktwebview SHARED json.cpp json.h utils.h utils.cpp + memqueue.h memqueue.cpp ) add_executable(rktwebview_prg diff --git a/lib/windows/x86_64/resources/icudtl.dat b/lib/windows-x86_64/resources/icudtl.dat similarity index 100% rename from lib/windows/x86_64/resources/icudtl.dat rename to lib/windows-x86_64/resources/icudtl.dat diff --git a/lib/windows/x86_64/resources/qtwebengine_devtools_resources.pak b/lib/windows-x86_64/resources/qtwebengine_devtools_resources.pak similarity index 100% rename from lib/windows/x86_64/resources/qtwebengine_devtools_resources.pak rename to lib/windows-x86_64/resources/qtwebengine_devtools_resources.pak diff --git a/lib/windows/x86_64/resources/qtwebengine_resources.pak b/lib/windows-x86_64/resources/qtwebengine_resources.pak similarity index 100% rename from lib/windows/x86_64/resources/qtwebengine_resources.pak rename to lib/windows-x86_64/resources/qtwebengine_resources.pak diff --git a/lib/windows/x86_64/resources/qtwebengine_resources_100p.pak b/lib/windows-x86_64/resources/qtwebengine_resources_100p.pak similarity index 100% rename from lib/windows/x86_64/resources/qtwebengine_resources_100p.pak rename to lib/windows-x86_64/resources/qtwebengine_resources_100p.pak diff --git a/lib/windows/x86_64/resources/qtwebengine_resources_200p.pak b/lib/windows-x86_64/resources/qtwebengine_resources_200p.pak similarity index 100% rename from lib/windows/x86_64/resources/qtwebengine_resources_200p.pak rename to lib/windows-x86_64/resources/qtwebengine_resources_200p.pak diff --git a/lib/windows/x86_64/resources/v8_context_snapshot.bin b/lib/windows-x86_64/resources/v8_context_snapshot.bin similarity index 100% rename from lib/windows/x86_64/resources/v8_context_snapshot.bin rename to lib/windows-x86_64/resources/v8_context_snapshot.bin diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/am.pak b/lib/windows-x86_64/translations/qtwebengine_locales/am.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/am.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/am.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ar.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ar.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ar.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ar.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/bg.pak b/lib/windows-x86_64/translations/qtwebengine_locales/bg.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/bg.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/bg.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/bn.pak b/lib/windows-x86_64/translations/qtwebengine_locales/bn.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/bn.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/bn.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ca.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ca.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ca.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ca.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/cs.pak b/lib/windows-x86_64/translations/qtwebengine_locales/cs.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/cs.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/cs.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/da.pak b/lib/windows-x86_64/translations/qtwebengine_locales/da.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/da.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/da.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/de.pak b/lib/windows-x86_64/translations/qtwebengine_locales/de.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/de.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/de.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/el.pak b/lib/windows-x86_64/translations/qtwebengine_locales/el.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/el.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/el.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/en-GB.pak b/lib/windows-x86_64/translations/qtwebengine_locales/en-GB.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/en-GB.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/en-GB.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/en-US.pak b/lib/windows-x86_64/translations/qtwebengine_locales/en-US.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/en-US.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/en-US.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/es-419.pak b/lib/windows-x86_64/translations/qtwebengine_locales/es-419.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/es-419.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/es-419.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/es.pak b/lib/windows-x86_64/translations/qtwebengine_locales/es.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/es.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/es.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/et.pak b/lib/windows-x86_64/translations/qtwebengine_locales/et.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/et.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/et.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/fa.pak b/lib/windows-x86_64/translations/qtwebengine_locales/fa.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/fa.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/fa.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/fi.pak b/lib/windows-x86_64/translations/qtwebengine_locales/fi.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/fi.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/fi.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/fil.pak b/lib/windows-x86_64/translations/qtwebengine_locales/fil.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/fil.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/fil.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/fr.pak b/lib/windows-x86_64/translations/qtwebengine_locales/fr.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/fr.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/fr.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/gu.pak b/lib/windows-x86_64/translations/qtwebengine_locales/gu.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/gu.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/gu.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/he.pak b/lib/windows-x86_64/translations/qtwebengine_locales/he.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/he.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/he.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/hi.pak b/lib/windows-x86_64/translations/qtwebengine_locales/hi.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/hi.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/hi.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/hr.pak b/lib/windows-x86_64/translations/qtwebengine_locales/hr.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/hr.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/hr.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/hu.pak b/lib/windows-x86_64/translations/qtwebengine_locales/hu.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/hu.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/hu.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/id.pak b/lib/windows-x86_64/translations/qtwebengine_locales/id.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/id.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/id.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/it.pak b/lib/windows-x86_64/translations/qtwebengine_locales/it.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/it.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/it.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ja.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ja.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ja.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ja.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/kn.pak b/lib/windows-x86_64/translations/qtwebengine_locales/kn.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/kn.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/kn.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ko.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ko.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ko.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ko.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/lt.pak b/lib/windows-x86_64/translations/qtwebengine_locales/lt.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/lt.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/lt.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/lv.pak b/lib/windows-x86_64/translations/qtwebengine_locales/lv.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/lv.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/lv.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ml.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ml.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ml.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ml.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/mr.pak b/lib/windows-x86_64/translations/qtwebengine_locales/mr.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/mr.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/mr.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ms.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ms.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ms.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ms.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/nb.pak b/lib/windows-x86_64/translations/qtwebengine_locales/nb.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/nb.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/nb.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/nl.pak b/lib/windows-x86_64/translations/qtwebengine_locales/nl.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/nl.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/nl.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/pl.pak b/lib/windows-x86_64/translations/qtwebengine_locales/pl.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/pl.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/pl.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/pt-BR.pak b/lib/windows-x86_64/translations/qtwebengine_locales/pt-BR.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/pt-BR.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/pt-BR.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/pt-PT.pak b/lib/windows-x86_64/translations/qtwebengine_locales/pt-PT.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/pt-PT.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/pt-PT.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ro.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ro.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ro.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ro.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ru.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ru.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ru.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ru.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/sk.pak b/lib/windows-x86_64/translations/qtwebengine_locales/sk.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/sk.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/sk.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/sl.pak b/lib/windows-x86_64/translations/qtwebengine_locales/sl.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/sl.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/sl.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/sr.pak b/lib/windows-x86_64/translations/qtwebengine_locales/sr.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/sr.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/sr.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/sv.pak b/lib/windows-x86_64/translations/qtwebengine_locales/sv.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/sv.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/sv.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/sw.pak b/lib/windows-x86_64/translations/qtwebengine_locales/sw.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/sw.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/sw.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/ta.pak b/lib/windows-x86_64/translations/qtwebengine_locales/ta.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/ta.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/ta.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/te.pak b/lib/windows-x86_64/translations/qtwebengine_locales/te.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/te.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/te.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/th.pak b/lib/windows-x86_64/translations/qtwebengine_locales/th.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/th.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/th.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/tr.pak b/lib/windows-x86_64/translations/qtwebengine_locales/tr.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/tr.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/tr.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/uk.pak b/lib/windows-x86_64/translations/qtwebengine_locales/uk.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/uk.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/uk.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/vi.pak b/lib/windows-x86_64/translations/qtwebengine_locales/vi.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/vi.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/vi.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/zh-CN.pak b/lib/windows-x86_64/translations/qtwebengine_locales/zh-CN.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/zh-CN.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/zh-CN.pak diff --git a/lib/windows/x86_64/translations/qtwebengine_locales/zh-TW.pak b/lib/windows-x86_64/translations/qtwebengine_locales/zh-TW.pak similarity index 100% rename from lib/windows/x86_64/translations/qtwebengine_locales/zh-TW.pak rename to lib/windows-x86_64/translations/qtwebengine_locales/zh-TW.pak diff --git a/memqueue.cpp b/memqueue.cpp new file mode 100644 index 0000000..02d0f8f --- /dev/null +++ b/memqueue.cpp @@ -0,0 +1,2 @@ +#include "memqueue.h" + diff --git a/memqueue.h b/memqueue.h new file mode 100644 index 0000000..0ce5e37 --- /dev/null +++ b/memqueue.h @@ -0,0 +1,72 @@ +#ifndef MEMQUEUE_H +#define MEMQUEUE_H + +#include +#include + +class MemQueueItem +{ +public: + MemQueueItem *next; + std::string _event; + int _wv; +}; + +class MemQueue +{ +private: + std::mutex _mutex; + int _depth; + MemQueueItem *_first; + MemQueueItem *_last; + +public: + void enqueue(int w, std::string s) { + _mutex.lock(); + MemQueueItem *item = new MemQueueItem(); + item->next = nullptr; + item->_event = s; + item->_wv = w; + if (_last == nullptr) { + _last = item; + _first = item; + } else { + _last->next = item; + _last = item; + } + _depth += 1; + _mutex.unlock(); + } + + bool dequeue(int &wv, std::string &s) { + _mutex.lock(); + if (_first == nullptr) { + _mutex.unlock(); + return false; + } + MemQueueItem *item = _first; + _first = _first->next; + if (_first == nullptr) { + _last = nullptr; + } + s = item->_event; + wv = item->_wv; + free(item); + _depth -= 1; + _mutex.unlock(); + return true; + } + + int depth() { + return _depth; + } + +public: + MemQueue() { + _depth = 0; + _first = nullptr; + _last = nullptr; + } +}; + +#endif // MEMQUEUE_H diff --git a/rktwebview.cpp b/rktwebview.cpp index 5782645..482823a 100644 --- a/rktwebview.cpp +++ b/rktwebview.cpp @@ -20,6 +20,7 @@ #include "rktwebview.h" #include "rkt_protocol.h" #include "shmqueue.h" +#include "memqueue.h" #include "json.h" #include "utils.h" @@ -41,7 +42,6 @@ typedef struct { ShmQueue *command_queue; ShmQueue *command_result_queue; ShmQueue *event_queue; - void (*evt_cb)(int entries); #ifdef _WIN32 HANDLE rkt_webview_prg_pid; #else @@ -53,6 +53,12 @@ typedef struct { int function_calls; int events; std::string log_file; + + void (*evt_cb)(int entries); + MemQueue *evt_queue; + std::thread *guard_thread; + bool guard_go_on; + } Handle_t; Handle_t *handler = nullptr; @@ -171,21 +177,19 @@ bool runRktWebview(Handle_t *handler) // Main C Interface ///////////////////////////////////////////////////////////////////// -static bool guard_go_on = false; -static std::thread *guard_thread = nullptr; +#define EVT_GUARD_STOP -93273 void rkt_evt_guard(void) { - int waiting = rkt_webview_events_waiting(); - while(guard_go_on) { - int w = rkt_webview_events_waiting(); - if (w != waiting) { - if (handler->evt_cb != nullptr) { - handler->evt_cb(w); + while(handler->guard_go_on) { + int wv; + std::string data; + if (handler->event_queue->dequeue(wv, data, true)) { + if (wv != EVT_GUARD_STOP) { + handler->evt_queue->enqueue(wv, data); + handler->evt_cb(1); } - waiting = w; } - std::this_thread::sleep_for(std::chrono::milliseconds(5)); } } @@ -199,11 +203,14 @@ void rkt_webview_cleanup() // Cleaning up when exiting the current custodian is not enough. if (handler->valid) { - INFO0("Stopping evt_guard\n"); - guard_go_on = false; - guard_thread->join(); - delete guard_thread; - guard_thread = nullptr; + if (handler->evt_cb != nullptr) { + INFO0("Stopping evt_guard\n"); + handler->guard_go_on = false; + handler->event_queue->enqueue(EVT_GUARD_STOP); + handler->guard_thread->join(); + delete handler->guard_thread; + handler->guard_thread = nullptr; + } INFO0("Sending quit message\n"); handler->command_queue->enqueue(CMD_QUIT); @@ -225,6 +232,7 @@ void rkt_webview_cleanup() delete handler->command_result_queue; delete handler->command_queue; delete handler->shm; + delete handler->evt_queue; delete handler; handler = nullptr; } @@ -253,7 +261,6 @@ void rkt_webview_init() handler->name = buf; handler->function_calls = 0; handler->events = 0; - handler->evt_cb = nullptr; handler->shm_size = SHM_SIZE; handler->shm = new Shm(handler->name.data(), handler->shm_size, true); @@ -267,9 +274,10 @@ void rkt_webview_init() handler->rkt_webview_prg_started = runRktWebview(handler); if (!handler->rkt_webview_prg_started) { handler->valid = false; } #endif - // Start event guard thread - guard_go_on = true; - guard_thread = new std::thread(rkt_evt_guard); + handler->guard_thread = nullptr; + handler->evt_cb = nullptr; + handler->evt_queue = new MemQueue(); + handler->guard_go_on = false; } else { handler->function_calls++; } @@ -304,7 +312,12 @@ static inline bool validHandle() void rkt_webview_register_evt_callback(void (*f)(int)) { rkt_webview_init(); + handler->evt_cb = f; + if (handler->guard_thread == nullptr) { + handler->guard_go_on = true; + handler->guard_thread = new std::thread(rkt_evt_guard); + } } rkt_wv_context_t rkt_webview_new_context(const char *boilerplate_js, const char *optional_server_cert_pem) @@ -563,29 +576,51 @@ result_t rkt_webview_message_box(rktwebview_t w, const char *title, const char * int rkt_webview_events_waiting() { - return handler->event_queue->depth(); + if (handler->evt_cb != nullptr) { + return handler->evt_queue->depth(); + } else { + return handler->event_queue->depth(); + } } rkt_data_t *rkt_webview_get_event() { //fprintf(stderr, "rkt_webview_get_event\n"); - int wv; - std::string data; - if (handler->event_queue->dequeue(wv, data, false)) { - //fprintf(stderr, "got event %d %s\n", wv, data.c_str()); - rkt_data_t *d = reinterpret_cast(malloc(sizeof(rkt_data_t))); - d->kind = rkt_data_kind_t::event; - - handler->events += 1; - size_t ds = data.size(); - d->data.event.event = reinterpret_cast(malloc(ds + 1)); - memcpy(d->data.event.event, data.c_str(), ds); - d->data.event.event[ds] = '\0'; - d->data.event.wv = wv; - //fprintf(stderr, "event: %d - '%s'\n", d->data.event.wv, d->data.event.event);fflush(stderr); - return d; + if (handler->evt_cb != nullptr) { + int wv; + std::string data; + if (handler->evt_queue->dequeue(wv, data)) { + rkt_data_t *d = reinterpret_cast(malloc(sizeof(rkt_data_t))); + d->kind = rkt_data_kind_t::event; + handler->events += 1; + size_t ds = data.size(); + d->data.event.event = reinterpret_cast(malloc(ds + 1)); + memcpy(d->data.event.event, data.c_str(), ds); + d->data.event.event[ds] = '\0'; + d->data.event.wv = wv; + return d; + } else { + return nullptr; + } } else { - return nullptr; + int wv; + std::string data; + if (handler->event_queue->dequeue(wv, data, false)) { + //fprintf(stderr, "got event %d %s\n", wv, data.c_str()); + rkt_data_t *d = reinterpret_cast(malloc(sizeof(rkt_data_t))); + d->kind = rkt_data_kind_t::event; + + handler->events += 1; + size_t ds = data.size(); + d->data.event.event = reinterpret_cast(malloc(ds + 1)); + memcpy(d->data.event.event, data.c_str(), ds); + d->data.event.event[ds] = '\0'; + d->data.event.wv = wv; + //fprintf(stderr, "event: %d - '%s'\n", d->data.event.wv, d->data.event.event);fflush(stderr); + return d; + } else { + return nullptr; + } } } diff --git a/rktwebview_test.cpp b/rktwebview_test.cpp index 1aa1199..030ec62 100644 --- a/rktwebview_test.cpp +++ b/rktwebview_test.cpp @@ -10,7 +10,7 @@ void evt_cb(int n) { - fprintf(stderr, "events waiting: %d\n", n); + fprintf(stderr, "events waiting: %d - %d\n", n, rkt_webview_events_waiting()); } int main(int argc, char *argv[])