mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-29 11:38:52 +02:00
6270 lines
353 KiB
Plaintext
6270 lines
353 KiB
Plaintext
From e99c73e28310801bf77c188fdcc14bb39c4090b7 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Wed, 1 Apr 2026 11:37:44 +1000
|
|
Subject: Add Haiku build support
|
|
|
|
Based on patches sourced from https://github.com/kenz-gelsoft/gecko-dev/
|
|
|
|
- Enabled building for Haiku.
|
|
- Implemented the cubeb audio backend for MediaKit (input and output).
|
|
- Implemented native notifications.
|
|
- Fixed build with WebRTC enabled.
|
|
- Implemented WebRTC modules for desktop capture and video capture.
|
|
- Made additional modifications for Haiku compatibility.
|
|
- Implement remote server
|
|
|
|
|
|
diff --git a/Cargo.toml b/Cargo.toml
|
|
index 10b3465..146b6ed 100644
|
|
--- a/Cargo.toml
|
|
+++ b/Cargo.toml
|
|
@@ -67,7 +67,7 @@ exclude = [
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
-rust-version = "1.90.0"
|
|
+rust-version = "1.89.0"
|
|
|
|
[workspace.dependencies]
|
|
# Shared across multiple UniFFI consumers.
|
|
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
|
|
index 141c9a0..ffc2beb 100644
|
|
--- a/browser/app/profile/firefox.js
|
|
+++ b/browser/app/profile/firefox.js
|
|
@@ -15,7 +15,9 @@
|
|
|
|
#ifdef XP_UNIX
|
|
#ifndef XP_MACOSX
|
|
- #define UNIX_BUT_NOT_MAC
|
|
+ #ifndef XP_HAIKU
|
|
+ #define UNIX_BUT_NOT_MAC_NOR_HAIKU
|
|
+ #endif
|
|
#endif
|
|
#endif
|
|
|
|
@@ -251,7 +253,7 @@ pref("browser.uitour.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/t
|
|
// How long to show a Hearbeat survey (two hours, in seconds)
|
|
pref("browser.uitour.surveyDuration", 7200);
|
|
|
|
-#ifdef UNIX_BUT_NOT_MAC
|
|
+#ifdef UNIX_BUT_NOT_MAC_NOR_HAIKU
|
|
pref("general.autoScroll", false);
|
|
#else
|
|
pref("general.autoScroll", true);
|
|
@@ -1131,7 +1133,7 @@ pref("browser.unexpectedScriptLoad.logLevel", "Warn");
|
|
pref("browser.tabs.min_inactive_duration_before_unload", 600000);
|
|
|
|
// Does middleclick paste of clipboard to new tab button
|
|
-#ifdef UNIX_BUT_NOT_MAC
|
|
+#ifdef UNIX_BUT_NOT_MAC_NOR_HAIKU
|
|
pref("browser.tabs.searchclipboardfor.middleclick", true);
|
|
#else
|
|
pref("browser.tabs.searchclipboardfor.middleclick", false);
|
|
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
|
|
index 8871fc9..a0f65ba 100644
|
|
--- a/browser/base/content/browser-sets.inc
|
|
+++ b/browser/base/content/browser-sets.inc
|
|
@@ -6,6 +6,12 @@
|
|
#ifdef XP_UNIX
|
|
#ifndef XP_MACOSX
|
|
#define XP_GNOME 1
|
|
+
|
|
+#ifdef XP_HAIKU
|
|
+#define XP_MACOSX_OR_HAIKU 1
|
|
+#endif
|
|
+#else
|
|
+#define XP_MACOSX_OR_HAIKU 1
|
|
#endif
|
|
#endif
|
|
|
|
@@ -211,7 +217,7 @@
|
|
|
|
<key keycode="VK_BACK" command="cmd_handleBackspace" reserved="false"/>
|
|
<key keycode="VK_BACK" command="cmd_handleShiftBackspace" modifiers="shift" reserved="false"/>
|
|
-#ifndef XP_MACOSX
|
|
+#ifndef XP_MACOSX_OR_HAIKU
|
|
<key id="goBackKb" keycode="VK_LEFT" command="Browser:Back" modifiers="alt"/>
|
|
<key id="goForwardKb" keycode="VK_RIGHT" command="Browser:Forward" modifiers="alt"/>
|
|
#else
|
|
@@ -356,10 +362,14 @@
|
|
<key id="key_undoCloseWindow" command="History:UndoCloseWindow" data-l10n-id="window-new-shortcut" modifiers="accel,shift"/>
|
|
|
|
#ifdef XP_GNOME
|
|
+#ifndef XP_HAIKU
|
|
#define NUM_SELECT_TAB_MODIFIER alt
|
|
#else
|
|
#define NUM_SELECT_TAB_MODIFIER accel
|
|
#endif
|
|
+#else
|
|
+#define NUM_SELECT_TAB_MODIFIER accel
|
|
+#endif
|
|
|
|
#expand <key id="key_selectTab1" key="1" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
|
|
#expand <key id="key_selectTab2" key="2" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
|
|
diff --git a/build/RunCbindgen.py b/build/RunCbindgen.py
|
|
index bb0de61..2459b8a 100644
|
|
--- a/build/RunCbindgen.py
|
|
+++ b/build/RunCbindgen.py
|
|
@@ -55,7 +55,7 @@ def generate_metadata(output, cargo_config):
|
|
# within a tree, the Rust dependencies have been vendored in so Cargo won't
|
|
# touch the lock file.
|
|
if not buildconfig.substs.get("JS_STANDALONE"):
|
|
- args.append("--frozen")
|
|
+ args.append("--offline")
|
|
|
|
stdout, returncode = _run_process(args)
|
|
|
|
diff --git a/build/gecko_templates.mozbuild b/build/gecko_templates.mozbuild
|
|
index af2fc4f..e61403a 100644
|
|
--- a/build/gecko_templates.mozbuild
|
|
+++ b/build/gecko_templates.mozbuild
|
|
@@ -44,7 +44,8 @@ def GeckoBinary(linkage="dependent", mozglue=None):
|
|
USE_LIBS += ["sanitizer-options"]
|
|
DEFINES["MOZ_HAS_MOZGLUE"] = True
|
|
if CONFIG["MOZ_GLUE_IN_PROGRAM"] and CONFIG["CC_TYPE"] in ("clang", "gcc"):
|
|
- LDFLAGS += ["-rdynamic"]
|
|
+ #LDFLAGS += ['-rdynamic']
|
|
+ LDFLAGS += ['-Wl,-export-dynamic']
|
|
elif mozglue == "library":
|
|
LIBRARY_DEFINES["MOZ_HAS_MOZGLUE"] = True
|
|
if not CONFIG["MOZ_GLUE_IN_PROGRAM"]:
|
|
diff --git a/build/gn_processor.py b/build/gn_processor.py
|
|
index 87b73b4..00b7471 100644
|
|
--- a/build/gn_processor.py
|
|
+++ b/build/gn_processor.py
|
|
@@ -185,6 +185,7 @@ def filter_gn_config(path, gn_result, sandbox_vars, input_vars, gn_target):
|
|
"loong64": "loongarch64",
|
|
}
|
|
oses = {
|
|
+ "haiku": "Haiku",
|
|
"android": "Android",
|
|
"linux": "Linux",
|
|
"mac": "Darwin",
|
|
@@ -802,7 +803,7 @@ def main():
|
|
|
|
vars_set = []
|
|
for is_debug in (True, False):
|
|
- for target_os in ("android", "linux", "mac", "openbsd", "win"):
|
|
+ for target_os in ("android", "linux", "mac", "openbsd", "haiku", "win"):
|
|
target_cpus = ["x64"]
|
|
if target_os in ("android", "linux", "mac", "win", "openbsd"):
|
|
target_cpus.append("arm64")
|
|
@@ -819,7 +820,7 @@ def main():
|
|
"host_cpu": "x64",
|
|
"is_debug": is_debug,
|
|
"target_cpu": target_cpu,
|
|
- "target_os": target_os,
|
|
+ "target_os": "haiku",
|
|
}
|
|
if target_os == "linux":
|
|
for enable_x11 in (True, False):
|
|
diff --git a/build/gyp_includes/common.gypi b/build/gyp_includes/common.gypi
|
|
index 8acb326..a50a782 100644
|
|
--- a/build/gyp_includes/common.gypi
|
|
+++ b/build/gyp_includes/common.gypi
|
|
@@ -685,7 +685,7 @@
|
|
|
|
# Default to enabled PIE; this is important for ASLR but we may need to be
|
|
# able to turn it off for various reasons.
|
|
- 'linux_disable_pie%': 0,
|
|
+ 'linux_disable_pie%': 1,
|
|
|
|
# The release channel that this build targets. This is used to restrict
|
|
# channel-specific build options, like which installer packages to create.
|
|
@@ -2557,7 +2557,7 @@
|
|
'target_conditions': [
|
|
['_type=="executable"', {
|
|
'ldflags': [
|
|
- '-pie',
|
|
+ '-fPIC',
|
|
],
|
|
}],
|
|
],
|
|
@@ -3169,7 +3169,7 @@
|
|
# understand slide, and get rid of the Valgrind check.
|
|
'xcode_settings': {
|
|
'OTHER_LDFLAGS': [
|
|
- '-Wl,-pie', # Position-independent executable (MH_PIE)
|
|
+ '-Wl,-fPIC', # Position-independent executable (MH_PIE)
|
|
],
|
|
},
|
|
}],
|
|
diff --git a/build/moz.configure/bindgen.configure b/build/moz.configure/bindgen.configure
|
|
index 533cdc5..f774555 100644
|
|
--- a/build/moz.configure/bindgen.configure
|
|
+++ b/build/moz.configure/bindgen.configure
|
|
@@ -203,7 +203,7 @@ def bindgen_libclang_path(libclang_path, clang, library_name_info, host):
|
|
libclang_choices.append(
|
|
"%sclang%s" % (library_name_info.dll.prefix, library_name_info.dll.suffix)
|
|
)
|
|
- if host.kernel == "Linux":
|
|
+ if host.kernel == "Linux" or host.kernel == "Haiku":
|
|
libclang_choices.append("libclang.so.*")
|
|
|
|
if host.os == "OpenBSD":
|
|
diff --git a/build/moz.configure/flags.configure b/build/moz.configure/flags.configure
|
|
index 2662792..8b77622 100644
|
|
--- a/build/moz.configure/flags.configure
|
|
+++ b/build/moz.configure/flags.configure
|
|
@@ -520,8 +520,8 @@ set_config("EXPAND_LIBS_LIST_STYLE", expand_libs_list_style)
|
|
# ---------------------------------
|
|
@depends(building_with_gnu_compatible_cc, target)
|
|
def moz_program_ldflags(building_with_gnu_compatible_cc, target):
|
|
- if building_with_gnu_compatible_cc and target.kernel not in ("Darwin", "WASI"):
|
|
- return ["-pie"]
|
|
+ if building_with_gnu_compatible_cc and target.kernel not in ("Darwin", "WASI", "Haiku"):
|
|
+ return ["-fPIC"]
|
|
|
|
|
|
set_config("MOZ_PROGRAM_LDFLAGS", moz_program_ldflags)
|
|
diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
|
|
index 892faaf..e4e50bf 100644
|
|
--- a/build/moz.configure/init.configure
|
|
+++ b/build/moz.configure/init.configure
|
|
@@ -519,6 +519,8 @@ def split_triplet(triplet, allow_wasi=False):
|
|
canonical_os = canonical_kernel = "DragonFly"
|
|
elif os.startswith("freebsd"):
|
|
canonical_os = canonical_kernel = "FreeBSD"
|
|
+ elif os.startswith("haiku"):
|
|
+ canonical_os = canonical_kernel = "Haiku"
|
|
elif os.startswith("netbsd"):
|
|
canonical_os = canonical_kernel = "NetBSD"
|
|
elif os.startswith("openbsd"):
|
|
@@ -947,6 +949,15 @@ def target_is_freebsd(target):
|
|
set_define("XP_FREEBSD", target_is_freebsd)
|
|
|
|
|
|
+@depends(target)
|
|
+def target_is_haiku(target):
|
|
+ if target.kernel == "Haiku":
|
|
+ return True
|
|
+
|
|
+
|
|
+set_define("XP_HAIKU", target_is_haiku)
|
|
+
|
|
+
|
|
@depends(target)
|
|
def target_is_solaris(target):
|
|
if target.kernel == "SunOS":
|
|
diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
|
|
index 4706133..842f545 100644
|
|
--- a/build/moz.configure/toolchain.configure
|
|
+++ b/build/moz.configure/toolchain.configure
|
|
@@ -2921,7 +2921,7 @@ def security_hardening_cflags(
|
|
if (
|
|
c_compiler.type == "clang"
|
|
and c_compiler.version >= "11.0.1"
|
|
- and target.os not in ("WINNT", "OSX", "OpenBSD")
|
|
+ and target.os not in ("WINNT", "OSX", "OpenBSD", "Haiku")
|
|
and target.cpu in ("x86", "x86_64", "ppc64", "s390x")
|
|
):
|
|
flags.append("-fstack-clash-protection")
|
|
diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
|
|
index c18221d..94d64c5 100644
|
|
--- a/config/makefiles/rust.mk
|
|
+++ b/config/makefiles/rust.mk
|
|
@@ -134,6 +134,10 @@ ifdef DEVELOPER_OPTIONS
|
|
rustflags_override += -Clto=off
|
|
endif
|
|
|
|
+ifeq ($(OS_ARCH), Haiku)
|
|
+rustflags_override += -Clto=off
|
|
+endif
|
|
+
|
|
ifdef MOZ_USING_SCCACHE
|
|
export RUSTC_WRAPPER=$(CCACHE)
|
|
endif
|
|
diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild
|
|
index e74e125..1655e23 100644
|
|
--- a/config/system-headers.mozbuild
|
|
+++ b/config/system-headers.mozbuild
|
|
@@ -864,7 +864,6 @@ system_headers = [
|
|
"sys/shm.h",
|
|
"sys/siginfo.h",
|
|
"sys/signal.h",
|
|
- "sys/single_threaded.h",
|
|
"sys/socket.h",
|
|
"sys/sockio.h",
|
|
"sys/sparc/frame.h",
|
|
diff --git a/dom/events/ShortcutKeyDefinitions.cpp b/dom/events/ShortcutKeyDefinitions.cpp
|
|
index 3f34f45..97b7c98 100644
|
|
--- a/dom/events/ShortcutKeyDefinitions.cpp
|
|
+++ b/dom/events/ShortcutKeyDefinitions.cpp
|
|
@@ -435,13 +435,13 @@ ShortcutKeyData ShortcutKeys::sBrowserHandlers[] = {
|
|
{u"keypress", u"VK_LEFT", nullptr, u"control,shift", u"cmd_selectWordPrevious"}, // Android, Emacs
|
|
{u"keypress", u"VK_RIGHT", nullptr, u"control,shift", u"cmd_selectWordNext"}, // Android, Emacs
|
|
#endif // MOZ_WIDGET_ANDROID || USE_EMACS_KEY_BINDINGS
|
|
-#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
|
+#if defined(XP_WIN) || (defined(MOZ_WIDGET_GTK) && !defined(XP_HAIKU))
|
|
{u"keypress", u"VK_LEFT", nullptr, u"control", u"cmd_moveLeft2"}, // Win, Linux
|
|
{u"keypress", u"VK_RIGHT", nullptr, u"control", u"cmd_moveRight2"}, // Win, Linux
|
|
{u"keypress", u"VK_LEFT", nullptr, u"control,shift", u"cmd_selectLeft2"}, // Win, Linux
|
|
{u"keypress", u"VK_RIGHT", nullptr, u"control,shift", u"cmd_selectRight2"}, // Win, Linux
|
|
#endif // XP_WIN || MOZ_WIDGET_GTK
|
|
-#if defined(MOZ_WIDGET_COCOA)
|
|
+#if defined(MOZ_WIDGET_COCOA) || defined(XP_HAIKU)
|
|
{u"keypress", u"VK_LEFT", nullptr, u"alt", u"cmd_moveLeft2"}, // macOS
|
|
{u"keypress", u"VK_RIGHT", nullptr, u"alt", u"cmd_moveRight2"}, // macOS
|
|
{u"keypress", u"VK_LEFT", nullptr, u"alt,shift", u"cmd_selectLeft2"}, // macOS
|
|
diff --git a/dom/media/CallbackThreadRegistry.cpp b/dom/media/CallbackThreadRegistry.cpp
|
|
index 4a1ec72..fc70f51 100644
|
|
--- a/dom/media/CallbackThreadRegistry.cpp
|
|
+++ b/dom/media/CallbackThreadRegistry.cpp
|
|
@@ -97,7 +97,9 @@ void CallbackThreadRegistry::Unregister(ProfilerThreadId aThreadId) {
|
|
return;
|
|
}
|
|
}
|
|
+#ifndef XP_HAIKU
|
|
MOZ_ASSERT_UNREACHABLE("Current thread was not registered");
|
|
+#endif
|
|
}
|
|
|
|
} // namespace mozilla
|
|
diff --git a/dom/media/webrtc/transport/common.build b/dom/media/webrtc/transport/common.build
|
|
index 6f89323..1e13b49 100644
|
|
--- a/dom/media/webrtc/transport/common.build
|
|
+++ b/dom/media/webrtc/transport/common.build
|
|
@@ -62,6 +62,11 @@ if CONFIG["OS_TARGET"] in ["Darwin", "DragonFly", "FreeBSD", "NetBSD", "OpenBSD"
|
|
LOCAL_INCLUDES += [
|
|
"/dom/media/webrtc/transport/third_party/nrappkit/src/port/darwin/include",
|
|
]
|
|
+elif CONFIG["OS_TARGET"] == "Haiku":
|
|
+ DEFINES["HAIKU"] = True
|
|
+ LOCAL_INCLUDES += [
|
|
+ "/dom/media/webrtc/transport/third_party/nrappkit/src/port/haiku/include",
|
|
+ ]
|
|
elif CONFIG["OS_TARGET"] == "Linux":
|
|
DEFINES["LINUX"] = True
|
|
LOCAL_INCLUDES += [
|
|
diff --git a/dom/media/webrtc/transport/third_party/nICEr/nicer.gyp b/dom/media/webrtc/transport/third_party/nICEr/nicer.gyp
|
|
index e9c72b5..3dadeea 100644
|
|
--- a/dom/media/webrtc/transport/third_party/nICEr/nicer.gyp
|
|
+++ b/dom/media/webrtc/transport/third_party/nICEr/nicer.gyp
|
|
@@ -7,7 +7,8 @@
|
|
#
|
|
{
|
|
'variables' : {
|
|
- 'have_ethtool_cmd_speed_hi%': 1
|
|
+ 'have_ethtool_cmd_speed_hi%': 1,
|
|
+ 'OS' : 'haiku'
|
|
},
|
|
'targets' : [
|
|
{
|
|
@@ -174,6 +175,38 @@
|
|
],
|
|
}],
|
|
|
|
+ ## Haiku
|
|
+ [ 'OS == "haiku"', {
|
|
+ 'cflags_mozilla': [
|
|
+ '-Wall',
|
|
+ '-Wno-parentheses',
|
|
+ '-Wno-strict-prototypes',
|
|
+ '-Wmissing-prototypes',
|
|
+ '-Wno-format',
|
|
+ '-Wno-format-security',
|
|
+ ],
|
|
+ 'defines' : [
|
|
+ 'HAIKU',
|
|
+ 'HAVE_LIBM=1',
|
|
+ 'HAVE_STRDUP=1',
|
|
+ 'HAVE_STRLCPY=1',
|
|
+ 'HAVE_SYS_TIME_H=1',
|
|
+ 'HAVE_VFPRINTF=1',
|
|
+ 'NEW_STDIO'
|
|
+ 'RETSIGTYPE=void',
|
|
+ 'TIME_WITH_SYS_TIME_H=1',
|
|
+ '__UNUSED__=__attribute__((unused))',
|
|
+ 'NO_REG_RPC'
|
|
+ ],
|
|
+
|
|
+ 'include_dirs': [
|
|
+ '../nrappkit/src/port/haiku/include'
|
|
+ ],
|
|
+
|
|
+ 'sources': [
|
|
+ ],
|
|
+ }],
|
|
+
|
|
## Win
|
|
[ 'OS == "win"', {
|
|
'defines' : [
|
|
diff --git a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c
|
|
index 4491b2b..5a6fb6b 100644
|
|
--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c
|
|
+++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c
|
|
@@ -211,8 +211,12 @@ nr_stun_get_addrs(nr_local_addr addrs[], int maxaddrs, int *count)
|
|
if (maxaddrs > 0) {
|
|
memset(addrs, 0, maxaddrs * sizeof(nr_local_addr));
|
|
}
|
|
-
|
|
+#if defined(HAIKU)
|
|
+ count = 0;
|
|
+ _status = R_INTERNAL;
|
|
+#else
|
|
_status = stun_getaddrs_filtered(addrs, maxaddrs, count);
|
|
+#endif
|
|
|
|
for (i = 0; i < *count; ++i) {
|
|
nr_local_addr_fmt_info_string(addrs+i,typestr,sizeof(typestr));
|
|
diff --git a/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun.h b/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun.h
|
|
index a32751d..ca054e0 100644
|
|
--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun.h
|
|
+++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun.h
|
|
@@ -53,9 +53,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#include <net/route.h>
|
|
#endif
|
|
#include <netinet/in.h>
|
|
+#ifdef HAIKU
|
|
+#include <netinet/ip_var.h>
|
|
+#else
|
|
#ifndef LINUX
|
|
#include <netinet/in_var.h>
|
|
#endif
|
|
+#endif
|
|
#include <arpa/inet.h>
|
|
#include <netdb.h>
|
|
#endif
|
|
diff --git a/dom/media/webrtc/transport/third_party/nrappkit/nrappkit.gyp b/dom/media/webrtc/transport/third_party/nrappkit/nrappkit.gyp
|
|
index 3faf272..0b007ea 100644
|
|
--- a/dom/media/webrtc/transport/third_party/nrappkit/nrappkit.gyp
|
|
+++ b/dom/media/webrtc/transport/third_party/nrappkit/nrappkit.gyp
|
|
@@ -6,6 +6,9 @@
|
|
#
|
|
#
|
|
{
|
|
+ 'variables' : {
|
|
+ 'OS' : 'haiku'
|
|
+ },
|
|
'targets' : [
|
|
{
|
|
'target_name' : 'nrappkit',
|
|
@@ -127,6 +130,39 @@
|
|
],
|
|
}],
|
|
|
|
+ ## Haiku
|
|
+ [ 'OS == "haiku"', {
|
|
+ 'cflags_mozilla': [
|
|
+ '-Wall',
|
|
+ '-Wno-parentheses',
|
|
+ '-Wno-strict-prototypes',
|
|
+ '-Wmissing-prototypes',
|
|
+ '-Wno-format',
|
|
+ '-Wno-format-security',
|
|
+ ],
|
|
+ 'defines' : [
|
|
+ 'HAIKU',
|
|
+ 'HAVE_LIBM=1',
|
|
+ 'HAVE_STRDUP=1',
|
|
+ 'HAVE_STRLCPY=1',
|
|
+ 'HAVE_SYS_TIME_H=1',
|
|
+ 'HAVE_VFPRINTF=1',
|
|
+ 'NEW_STDIO'
|
|
+ 'RETSIGTYPE=void',
|
|
+ 'TIME_WITH_SYS_TIME_H=1',
|
|
+ '__UNUSED__=__attribute__((unused))',
|
|
+ 'NO_REG_RPC'
|
|
+ ],
|
|
+
|
|
+ 'include_dirs': [
|
|
+ 'src/port/haiku/include'
|
|
+ ],
|
|
+
|
|
+ 'sources': [
|
|
+ './src/port/haiku/include/csi_platform.h',
|
|
+ ],
|
|
+ }],
|
|
+
|
|
## Win
|
|
[ 'OS == "win"', {
|
|
'defines' : [
|
|
diff --git a/dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c b/dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c
|
|
index cbf974f..35fd277 100644
|
|
--- a/dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c
|
|
+++ b/dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c
|
|
@@ -36,7 +36,7 @@
|
|
ekr@rtfm.com Mon Dec 3 15:24:38 2001
|
|
*/
|
|
|
|
-#ifdef LINUX
|
|
+#if defined(LINUX) || defined(HAIKU)
|
|
#define _BSD_SOURCE
|
|
#define _DEFAULT_SOURCE
|
|
#endif
|
|
diff --git a/dom/media/webrtc/transport/third_party/nrappkit/src/port/haiku/include/csi_platform.h b/dom/media/webrtc/transport/third_party/nrappkit/src/port/haiku/include/csi_platform.h
|
|
new file mode 100644
|
|
index 0000000..bc8ad50
|
|
--- /dev/null
|
|
+++ b/dom/media/webrtc/transport/third_party/nrappkit/src/port/haiku/include/csi_platform.h
|
|
@@ -0,0 +1,58 @@
|
|
+/**
|
|
+ platform.h
|
|
+
|
|
+
|
|
+ Copyright (C) 2005, Network Resonance, Inc.
|
|
+ Copyright (C) 2006, Network Resonance, Inc.
|
|
+ All Rights Reserved
|
|
+
|
|
+ Redistribution and use in source and binary forms, with or without
|
|
+ modification, are permitted provided that the following conditions
|
|
+ are met:
|
|
+
|
|
+ 1. Redistributions of source code must retain the above copyright
|
|
+ notice, this list of conditions and the following disclaimer.
|
|
+ 2. Redistributions in binary form must reproduce the above copyright
|
|
+ notice, this list of conditions and the following disclaimer in the
|
|
+ documentation and/or other materials provided with the distribution.
|
|
+ 3. Neither the name of Network Resonance, Inc. nor the name of any
|
|
+ contributors to this software may be used to endorse or promote
|
|
+ products derived from this software without specific prior written
|
|
+ permission.
|
|
+
|
|
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
|
|
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
+ POSSIBILITY OF SUCH DAMAGE.
|
|
+
|
|
+
|
|
+ briank@network-resonance.com Tue Mar 15 14:28:12 PST 2005
|
|
+ */
|
|
+
|
|
+
|
|
+#ifndef _platform_h
|
|
+#define _platform_h
|
|
+
|
|
+#include <unistd.h>
|
|
+#include <string.h>
|
|
+
|
|
+#define STDIO_BYTES_BUFFERED(fp) (fp->_r)
|
|
+
|
|
+#ifdef NR_SOCKET_IS_VOID_PTR
|
|
+typedef void* NR_SOCKET;
|
|
+#else
|
|
+typedef int NR_SOCKET;
|
|
+#define NR_SOCKET_READ(sock,buf,count) read((sock),(buf),(count))
|
|
+#define NR_SOCKET_WRITE(sock,buf,count) write((sock),(buf),(count))
|
|
+#define NR_SOCKET_CLOSE(sock) close(sock)
|
|
+#endif
|
|
+
|
|
+#endif
|
|
+
|
|
diff --git a/gfx/angle/checkout/src/common/system_utils_posix.cpp b/gfx/angle/checkout/src/common/system_utils_posix.cpp
|
|
index ab0faee..f9c9389 100644
|
|
--- a/gfx/angle/checkout/src/common/system_utils_posix.cpp
|
|
+++ b/gfx/angle/checkout/src/common/system_utils_posix.cpp
|
|
@@ -201,7 +201,9 @@ void *OpenSystemLibraryWithExtensionAndGetError(const char *libraryName,
|
|
int extraFlags = 0;
|
|
if (searchType == SearchType::AlreadyLoaded)
|
|
{
|
|
+#ifndef __HAIKU__
|
|
extraFlags = RTLD_NOLOAD;
|
|
+#endif
|
|
}
|
|
|
|
std::string fullPath = directory + libraryName;
|
|
diff --git a/gfx/layers/wr/IpcResourceUpdateQueue.cpp b/gfx/layers/wr/IpcResourceUpdateQueue.cpp
|
|
index 1c04ba7..c6257e0 100644
|
|
--- a/gfx/layers/wr/IpcResourceUpdateQueue.cpp
|
|
+++ b/gfx/layers/wr/IpcResourceUpdateQueue.cpp
|
|
@@ -50,7 +50,8 @@ layers::OffsetRange ShmSegmentsWriter::Write(Range<uint8_t> aBytes) {
|
|
const size_t start = mCursor;
|
|
const size_t length = aBytes.length();
|
|
|
|
- if (length >= mChunkSize * 4) {
|
|
+// if (length >= mChunkSize * 4) {
|
|
+ if (length > 0) {
|
|
auto range = AllocLargeChunk(length);
|
|
if (range.length()) {
|
|
// Allocation was successful
|
|
diff --git a/gfx/skia/skia/include/private/base/SkTArray.h b/gfx/skia/skia/include/private/base/SkTArray.h
|
|
index a0ec09e..59d98a3 100644
|
|
--- a/gfx/skia/skia/include/private/base/SkTArray.h
|
|
+++ b/gfx/skia/skia/include/private/base/SkTArray.h
|
|
@@ -562,7 +562,7 @@ private:
|
|
|
|
// Note for 32-bit machines kMaxCapacity will be <= SIZE_MAX. For 64-bit machines it will
|
|
// just be INT_MAX if the sizeof(T) < 2^32.
|
|
- static constexpr int kMaxCapacity = SkToInt(std::min(SIZE_MAX / sizeof(T), (size_t)INT_MAX));
|
|
+ static constexpr int kMaxCapacity = SkToInt(std::min((size_t)SIZE_MAX / sizeof(T), (size_t)INT_MAX));
|
|
|
|
void setDataFromBytes(SkSpan<std::byte> allocation) {
|
|
T* data = TCast(allocation.data());
|
|
diff --git a/image/SurfaceCache.cpp b/image/SurfaceCache.cpp
|
|
index c01b18e..4e47963 100644
|
|
--- a/image/SurfaceCache.cpp
|
|
+++ b/image/SurfaceCache.cpp
|
|
@@ -1625,7 +1625,7 @@ void SurfaceCache::Initialize() {
|
|
// Compute the size of the surface cache.
|
|
uint64_t memorySize = PR_GetPhysicalMemorySize();
|
|
if (memorySize == 0) {
|
|
-#if !defined(__DragonFly__)
|
|
+#if !defined(__DragonFly__) && !defined(__HAIKU__)
|
|
MOZ_ASSERT_UNREACHABLE("PR_GetPhysicalMemorySize not implemented here");
|
|
#endif
|
|
memorySize = 256 * 1024 * 1024; // Fall back to 256MB.
|
|
diff --git a/ipc/chromium/moz.build b/ipc/chromium/moz.build
|
|
index 8454c22..1daaa7f 100644
|
|
--- a/ipc/chromium/moz.build
|
|
+++ b/ipc/chromium/moz.build
|
|
@@ -112,7 +112,7 @@ if CONFIG["TARGET_OS"] == "iOS":
|
|
"src/base/process_util_ios.cpp",
|
|
]
|
|
|
|
-if CONFIG["TARGET_KERNEL"] in ("DragonFly", "FreeBSD", "NetBSD", "OpenBSD"):
|
|
+if CONFIG["TARGET_KERNEL"] in ("DragonFly", "FreeBSD", "NetBSD", "OpenBSD", "Haiku"):
|
|
SOURCES += [
|
|
"src/base/process_util_linux.cc",
|
|
"src/base/time_posix.cc",
|
|
diff --git a/ipc/chromium/src/base/message_loop.cc b/ipc/chromium/src/base/message_loop.cc
|
|
index de843ad..f5ca10f 100644
|
|
--- a/ipc/chromium/src/base/message_loop.cc
|
|
+++ b/ipc/chromium/src/base/message_loop.cc
|
|
@@ -29,7 +29,7 @@
|
|
# include "base/message_pump_libevent.h"
|
|
#endif
|
|
#if defined(XP_LINUX) || defined(__DragonFly__) || defined(XP_FREEBSD) || \
|
|
- defined(XP_NETBSD) || defined(XP_OPENBSD)
|
|
+ defined(XP_NETBSD) || defined(XP_OPENBSD) || defined(XP_HAIKU)
|
|
# if defined(MOZ_WIDGET_GTK)
|
|
# include "base/message_pump_glib.h"
|
|
# endif
|
|
@@ -280,7 +280,7 @@ MessageLoop::MessageLoop(Type type, nsISerialEventTarget* aEventTarget)
|
|
# if defined(XP_DARWIN)
|
|
pump_ = base::MessagePumpMac::Create();
|
|
# elif defined(XP_LINUX) || defined(__DragonFly__) || defined(XP_FREEBSD) || \
|
|
- defined(XP_NETBSD) || defined(XP_OPENBSD)
|
|
+ defined(XP_NETBSD) || defined(XP_OPENBSD) || defined(XP_HAIKU)
|
|
pump_ = new base::MessagePumpForUI();
|
|
# endif // XP_LINUX
|
|
} else if (type_ == TYPE_IO) {
|
|
diff --git a/ipc/chromium/src/base/platform_thread.h b/ipc/chromium/src/base/platform_thread.h
|
|
index f3a65e8..40ad58b 100644
|
|
--- a/ipc/chromium/src/base/platform_thread.h
|
|
+++ b/ipc/chromium/src/base/platform_thread.h
|
|
@@ -24,7 +24,7 @@ typedef void* PlatformThreadHandle; // HANDLE
|
|
#else
|
|
# include <pthread.h>
|
|
typedef pthread_t PlatformThreadHandle;
|
|
-# if defined(XP_LINUX) || defined(XP_OPENBSD) || defined(XP_SOLARIS) || \
|
|
+# if defined(XP_LINUX) || defined(XP_OPENBSD) || defined(XP_SOLARIS) || defined(XP_HAIKU) || \
|
|
defined(__GLIBC__)
|
|
# include <unistd.h>
|
|
typedef pid_t PlatformThreadId;
|
|
diff --git a/ipc/chromium/src/base/platform_thread_posix.cc b/ipc/chromium/src/base/platform_thread_posix.cc
|
|
index d28abbc..af56adf 100644
|
|
--- a/ipc/chromium/src/base/platform_thread_posix.cc
|
|
+++ b/ipc/chromium/src/base/platform_thread_posix.cc
|
|
@@ -16,6 +16,8 @@
|
|
#elif defined(XP_LINUX)
|
|
# include <sys/syscall.h>
|
|
# include <sys/prctl.h>
|
|
+#elif defined(__HAIKU__)
|
|
+# include <OS.h>
|
|
#endif
|
|
|
|
#if !defined(XP_DARWIN)
|
|
@@ -60,6 +62,8 @@ PlatformThreadId PlatformThread::CurrentId() {
|
|
return lwp_gettid();
|
|
#elif defined(XP_FREEBSD)
|
|
return pthread_getthreadid_np();
|
|
+#elif defined(__HAIKU__)
|
|
+ return find_thread(NULL);
|
|
#endif
|
|
}
|
|
|
|
diff --git a/ipc/chromium/src/base/process_util_posix.cc b/ipc/chromium/src/base/process_util_posix.cc
|
|
index f9ad5f6..5fd15e1 100644
|
|
--- a/ipc/chromium/src/base/process_util_posix.cc
|
|
+++ b/ipc/chromium/src/base/process_util_posix.cc
|
|
@@ -125,7 +125,7 @@ void CloseSuperfluousFds(void* aCtx, bool (*aShouldPreserve)(void*, int)) {
|
|
#if defined(ANDROID)
|
|
static const rlim_t kSystemDefaultMaxFds = 1024;
|
|
static const char kFDDir[] = "/proc/self/fd";
|
|
-#elif defined(XP_LINUX) || defined(XP_SOLARIS)
|
|
+#elif defined(XP_LINUX) || defined(XP_SOLARIS) || defined(XP_HAIKU)
|
|
static const rlim_t kSystemDefaultMaxFds = 8192;
|
|
static const char kFDDir[] = "/proc/self/fd";
|
|
#elif defined(XP_DARWIN)
|
|
diff --git a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc
|
|
index 85911fe..d8e4a51 100644
|
|
--- a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc
|
|
+++ b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc
|
|
@@ -291,6 +291,18 @@ bool ChannelPosix::ProcessIncomingMessages() {
|
|
if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) {
|
|
const unsigned payload_len = cmsg->cmsg_len - CMSG_LEN(0);
|
|
DCHECK(payload_len % sizeof(int) == 0);
|
|
+#ifdef XP_HAIKU
|
|
+ if (num_wire_fds > 0) {
|
|
+ if (input_overflow_fds_.empty()) {
|
|
+ input_overflow_fds_ = std::vector<int>(&wire_fds[0], &wire_fds[num_wire_fds]);
|
|
+ } else {
|
|
+ const size_t prev_size = input_overflow_fds_.size();
|
|
+ input_overflow_fds_.resize(prev_size + num_wire_fds);
|
|
+ memcpy(&input_overflow_fds_[prev_size], wire_fds,
|
|
+ num_wire_fds * sizeof(int));
|
|
+ }
|
|
+ }
|
|
+#endif
|
|
wire_fds = reinterpret_cast<int*>(CMSG_DATA(cmsg));
|
|
num_wire_fds = payload_len / 4;
|
|
|
|
@@ -302,7 +314,9 @@ bool ChannelPosix::ProcessIncomingMessages() {
|
|
IGNORE_EINTR(close(wire_fds[i]));
|
|
return false;
|
|
}
|
|
+#ifndef XP_HAIKU
|
|
break;
|
|
+#endif
|
|
}
|
|
}
|
|
}
|
|
diff --git a/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc b/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
|
|
index 1bb8b31..c8aa63e 100644
|
|
--- a/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
|
|
+++ b/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
|
|
@@ -43,7 +43,7 @@
|
|
# error Unsupported OS
|
|
#endif
|
|
|
|
-#if !defined(XP_DARWIN)
|
|
+#if !defined(XP_DARWIN) && !defined(XP_HAIKU)
|
|
// Linux, {Free,Net,Open}BSD, and Solaris; but not macOS, yet.
|
|
# define HAVE_PIPE2 1
|
|
#endif
|
|
diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp
|
|
index ef75406..02a76ce 100644
|
|
--- a/ipc/glue/GeckoChildProcessHost.cpp
|
|
+++ b/ipc/glue/GeckoChildProcessHost.cpp
|
|
@@ -1129,7 +1129,7 @@ Result<Ok, LaunchError> BaseProcessLauncher::DoSetup() {
|
|
#if defined(MOZ_WIDGET_COCOA) || defined(XP_WIN)
|
|
geckoargs::sCrashReporter.Put(CrashReporter::GetChildNotificationPipe(),
|
|
mChildArgs);
|
|
-#elif defined(XP_UNIX) && !defined(XP_IOS)
|
|
+#elif defined(XP_UNIX) && !defined(XP_IOS) && !defined(XP_HAIKU)
|
|
UniqueFileHandle childCrashFd = CrashReporter::GetChildNotificationPipe();
|
|
if (!childCrashFd) {
|
|
return Err(LaunchError("DuplicateFileHandle failed"));
|
|
diff --git a/js/src/threading/moz.build b/js/src/threading/moz.build
|
|
index 78e4cd1..15f60e3 100644
|
|
--- a/js/src/threading/moz.build
|
|
+++ b/js/src/threading/moz.build
|
|
@@ -34,6 +34,11 @@ elif CONFIG["OS_ARCH"] == "WASI":
|
|
"noop/NoopThread.cpp",
|
|
]
|
|
else:
|
|
+ if CONFIG["OS_ARCH"] == "Haiku":
|
|
+ DEFINES["_GNU_SOURCE"] = True
|
|
+ OS_LIBS += [
|
|
+ "gnu",
|
|
+ ]
|
|
UNIFIED_SOURCES += [
|
|
"posix/CpuCount.cpp",
|
|
"posix/PosixThread.cpp",
|
|
diff --git a/js/src/util/NativeStack.cpp b/js/src/util/NativeStack.cpp
|
|
index e77289c..4946275 100644
|
|
--- a/js/src/util/NativeStack.cpp
|
|
+++ b/js/src/util/NativeStack.cpp
|
|
@@ -31,6 +31,9 @@
|
|
# include <unistd.h>
|
|
# define gettid() static_cast<pid_t>(syscall(__NR_gettid))
|
|
# endif
|
|
+# if defined(XP_HAIKU)
|
|
+# include <OS.h>
|
|
+# endif
|
|
#else
|
|
# error "Unsupported platform"
|
|
#endif
|
|
@@ -116,6 +119,14 @@ void* js::GetNativeStackBaseImpl() {
|
|
# endif
|
|
}
|
|
|
|
+#elif defined(XP_HAIKU)
|
|
+
|
|
+void* js::GetNativeStackBaseImpl() {
|
|
+ thread_info info;
|
|
+ get_thread_info(find_thread(NULL), &info);
|
|
+ return info.stack_end;
|
|
+}
|
|
+
|
|
#elif defined(__wasi__)
|
|
|
|
// Since we rearrange the layout for wasi via --stack-first flag for the linker
|
|
diff --git a/js/src/vm/DateTime.cpp b/js/src/vm/DateTime.cpp
|
|
index 12cf871..a8a7750 100644
|
|
--- a/js/src/vm/DateTime.cpp
|
|
+++ b/js/src/vm/DateTime.cpp
|
|
@@ -10,6 +10,15 @@
|
|
# include "mozilla/intl/ICU4CGlue.h"
|
|
# include "mozilla/intl/TimeZone.h"
|
|
#endif
|
|
+
|
|
+#if JS_HAS_INTL_API && defined(__HAIKU__)
|
|
+# pragma GCC visibility push(default)
|
|
+# include <locale/LocaleRoster.h>
|
|
+# include <locale/TimeZone.h>
|
|
+# include <support/String.h>
|
|
+# pragma GCC visibility pop
|
|
+#endif
|
|
+
|
|
#include "mozilla/ScopeExit.h"
|
|
#include "mozilla/Span.h"
|
|
#include "mozilla/TextUtils.h"
|
|
@@ -811,6 +820,21 @@ static bool ReadTimeZoneLink(std::string_view tz,
|
|
#endif /* JS_HAS_INTL_API */
|
|
|
|
void js::DateTimeInfo::internalResyncICUDefaultTimeZone() {
|
|
+#if defined(__HAIKU__)
|
|
+ BTimeZone timeZone;
|
|
+ if (BLocaleRoster::Default()->GetDefaultTimeZone(&timeZone) == B_OK) {
|
|
+ BString timeZoneID = timeZone.ID();
|
|
+ if (timeZoneID.Length() > 0) {
|
|
+ mozilla::Span<const char> tzid(timeZoneID.String(),
|
|
+ timeZoneID.Length());
|
|
+ auto result = mozilla::intl::TimeZone::SetDefaultTimeZone(tzid);
|
|
+ if (result.isOk() && result.unwrap()) {
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ (void)mozilla::intl::TimeZone::SetDefaultTimeZoneFromHostTimeZone();
|
|
+#else
|
|
#if JS_HAS_INTL_API
|
|
if (const char* tzenv = std::getenv("TZ")) {
|
|
std::string_view tz(tzenv);
|
|
@@ -873,5 +897,6 @@ void js::DateTimeInfo::internalResyncICUDefaultTimeZone() {
|
|
// Intentionally ignore any errors, because we don't have a good way to report
|
|
// errors from this function.
|
|
(void)mozilla::intl::TimeZone::SetDefaultTimeZoneFromHostTimeZone();
|
|
-#endif
|
|
+#endif /* JS_HAS_INTL_API */
|
|
+#endif /* __HAIKU__ */
|
|
}
|
|
diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
|
|
index 91c620a..cfef64d 100644
|
|
--- a/js/src/wasm/WasmSignalHandlers.cpp
|
|
+++ b/js/src/wasm/WasmSignalHandlers.cpp
|
|
@@ -238,6 +238,17 @@ using namespace js::wasm;
|
|
# define R01_sig(p) ((p)->uc_mcontext.mc_gpr[1])
|
|
# define R32_sig(p) ((p)->uc_mcontext.mc_srr0)
|
|
# endif
|
|
+# elif defined(XP_HAIKU)
|
|
+# define EIP_sig(p) ((p)->uc_mcontext.eip)
|
|
+# define EBP_sig(p) ((p)->uc_mcontext.ebp)
|
|
+# define ESP_sig(p) ((p)->uc_mcontext.esp)
|
|
+# define RIP_sig(p) ((p)->uc_mcontext.rip)
|
|
+# define RSP_sig(p) ((p)->uc_mcontext.rsp)
|
|
+# define RBP_sig(p) ((p)->uc_mcontext.rbp)
|
|
+# define R11_sig(p) ((p)->uc_mcontext.r11)
|
|
+# define R13_sig(p) ((p)->uc_mcontext.r13)
|
|
+# define R14_sig(p) ((p)->uc_mcontext.r14)
|
|
+# define R15_sig(p) ((p)->uc_mcontext.r15)
|
|
# elif defined(XP_DARWIN)
|
|
# define EIP_sig(p) ((p)->thread.uts.ts32.__eip)
|
|
# define EBP_sig(p) ((p)->thread.uts.ts32.__ebp)
|
|
diff --git a/media/ffvpx/config_unix64.h b/media/ffvpx/config_unix64.h
|
|
index 7d63f47..f72e3bd 100644
|
|
--- a/media/ffvpx/config_unix64.h
|
|
+++ b/media/ffvpx/config_unix64.h
|
|
@@ -291,7 +291,7 @@
|
|
#define HAVE_COMMANDLINETOARGVW 0
|
|
#define HAVE_FCNTL 1
|
|
#define HAVE_GETADDRINFO 1
|
|
-#define HAVE_GETAUXVAL 1
|
|
+#define HAVE_GETAUXVAL 0
|
|
#define HAVE_GETENV 1
|
|
#define HAVE_GETHRTIME 0
|
|
#define HAVE_GETOPT 1
|
|
@@ -319,7 +319,7 @@
|
|
#define HAVE_NANOSLEEP 1
|
|
#define HAVE_PEEKNAMEDPIPE 0
|
|
#define HAVE_PTHREAD_CANCEL 1
|
|
-#define HAVE_SCHED_GETAFFINITY 1
|
|
+#define HAVE_SCHED_GETAFFINITY 0
|
|
#define HAVE_SECITEMIMPORT 0
|
|
#define HAVE_SETCONSOLETEXTATTRIBUTE 0
|
|
#define HAVE_SETCONSOLECTRLHANDLER 0
|
|
diff --git a/media/libcubeb/src/cubeb.c b/media/libcubeb/src/cubeb.c
|
|
index 0511ad9..1e0b48e 100644
|
|
--- a/media/libcubeb/src/cubeb.c
|
|
+++ b/media/libcubeb/src/cubeb.c
|
|
@@ -79,6 +79,10 @@ oss_init(cubeb ** context, char const * context_name);
|
|
int
|
|
aaudio_init(cubeb ** context, char const * context_name);
|
|
#endif
|
|
+#if defined(USE_HAIKU)
|
|
+int
|
|
+haiku_init(cubeb ** context, char const * context_name);
|
|
+#endif
|
|
#if defined(USE_AUDIOTRACK)
|
|
int
|
|
audiotrack_init(cubeb ** context, char const * context_name);
|
|
@@ -199,6 +203,10 @@ cubeb_init(cubeb ** context, char const * context_name,
|
|
} else if (!strcmp(backend_name, "aaudio")) {
|
|
#if defined(USE_AAUDIO)
|
|
init_oneshot = aaudio_init;
|
|
+#endif
|
|
+ } else if (!strcmp(backend_name, "haiku")) {
|
|
+#if defined(USE_HAIKU)
|
|
+ init_oneshot = haiku_init;
|
|
#endif
|
|
} else if (!strcmp(backend_name, "audiotrack")) {
|
|
#if defined(USE_AUDIOTRACK)
|
|
@@ -255,6 +263,9 @@ cubeb_init(cubeb ** context, char const * context_name,
|
|
#if defined(USE_AAUDIO)
|
|
aaudio_init,
|
|
#endif
|
|
+#if defined(USE_HAIKU)
|
|
+ haiku_init,
|
|
+#endif
|
|
#if defined(USE_OPENSL)
|
|
opensl_init,
|
|
#endif
|
|
diff --git a/media/libcubeb/src/cubeb_haiku.cpp b/media/libcubeb/src/cubeb_haiku.cpp
|
|
new file mode 100644
|
|
index 0000000..d2385d7
|
|
--- /dev/null
|
|
+++ b/media/libcubeb/src/cubeb_haiku.cpp
|
|
@@ -0,0 +1,952 @@
|
|
+/*
|
|
+ * Copyright © 2024-2025 Troeglazov Gerasim
|
|
+ *
|
|
+ * This program is made available under an ISC-style license. See the
|
|
+ * accompanying file LICENSE for details.
|
|
+ */
|
|
+
|
|
+#include "cubeb-internal.h"
|
|
+#include "cubeb/cubeb.h"
|
|
+#include "cubeb_utils.h"
|
|
+#include "cubeb_ringbuffer.h"
|
|
+
|
|
+#include <stdio.h>
|
|
+#include <stdlib.h>
|
|
+#include <string.h>
|
|
+#include <pthread.h>
|
|
+#include <unistd.h>
|
|
+#include <cmath>
|
|
+
|
|
+// Workaround for gcc_hidden.h hack of libxul.so
|
|
+#pragma GCC visibility push(default)
|
|
+
|
|
+#include <kernel/OS.h>
|
|
+#include <app/Application.h>
|
|
+#include <app/Roster.h>
|
|
+#include <media/SoundPlayer.h>
|
|
+#include <storage/NodeInfo.h>
|
|
+#include <storage/Path.h>
|
|
+#include <support/String.h>
|
|
+#include <support/Errors.h>
|
|
+
|
|
+#include <AudioCapture.h>
|
|
+
|
|
+#pragma GCC visibility pop
|
|
+
|
|
+static const int MAX_CHANNELS = 2;
|
|
+static const char DEFAULT_CONTEXT_NAME[] = "Cubeb";
|
|
+
|
|
+static const char HAIKU_DEFAULT_IN[] = "Default Input";
|
|
+static const char HAIKU_DEFAULT_OUT[] = "Default Output";
|
|
+
|
|
+#define HAIKU_DEFAULT_IN_ID ((cubeb_devid)(uintptr_t)HAIKU_DEFAULT_IN)
|
|
+#define HAIKU_DEFAULT_OUT_ID ((cubeb_devid)(uintptr_t)HAIKU_DEFAULT_OUT)
|
|
+
|
|
+// Function Declarations
|
|
+extern "C" {
|
|
+int haiku_init(cubeb ** context, char const * context_name);
|
|
+}
|
|
+static void haiku_destroy(cubeb* context);
|
|
+static char const* haiku_get_backend_id(cubeb* context);
|
|
+static int haiku_get_max_channel_count(cubeb* ctx, uint32_t* max_channels);
|
|
+static int haiku_get_min_latency(cubeb* ctx, cubeb_stream_params params, uint32_t* latency_frames);
|
|
+static int haiku_get_preferred_sample_rate(cubeb* ctx, uint32_t* rate);
|
|
+static int haiku_stream_init(cubeb* context,
|
|
+ cubeb_stream** stream,
|
|
+ char const* stream_name,
|
|
+ cubeb_devid input_device,
|
|
+ cubeb_stream_params* input_stream_params,
|
|
+ cubeb_devid output_device,
|
|
+ cubeb_stream_params* output_stream_params,
|
|
+ unsigned int latency_frames,
|
|
+ cubeb_data_callback data_callback,
|
|
+ cubeb_state_callback state_callback,
|
|
+ void* user_ptr);
|
|
+static void haiku_stream_destroy(cubeb_stream* stream);
|
|
+static int haiku_stream_start(cubeb_stream* stream);
|
|
+static int haiku_stream_stop(cubeb_stream* stream);
|
|
+static int haiku_stream_get_position(cubeb_stream* stream, uint64_t* position);
|
|
+static int haiku_stream_get_latency(cubeb_stream* stream, uint32_t* latency_frames);
|
|
+static int haiku_stream_set_volume(cubeb_stream* stream, float volume);
|
|
+static int haiku_stream_get_current_device(cubeb_stream* stream, cubeb_device** const device);
|
|
+static int haiku_enumerate_devices(cubeb* context, cubeb_device_type type, cubeb_device_collection* collection);
|
|
+static int haiku_device_collection_destroy(cubeb* context, cubeb_device_collection* collection);
|
|
+
|
|
+// Cubeb Ops Table
|
|
+static struct cubeb_ops const cubeb_haiku_ops = {
|
|
+ .init = haiku_init,
|
|
+ .get_backend_id = haiku_get_backend_id,
|
|
+ .get_max_channel_count = haiku_get_max_channel_count,
|
|
+ .get_min_latency = haiku_get_min_latency,
|
|
+ .get_preferred_sample_rate = haiku_get_preferred_sample_rate,
|
|
+ .get_supported_input_processing_params = NULL,
|
|
+ .enumerate_devices = haiku_enumerate_devices,
|
|
+ .device_collection_destroy = haiku_device_collection_destroy,
|
|
+ .destroy = haiku_destroy,
|
|
+ .stream_init = haiku_stream_init,
|
|
+ .stream_destroy = haiku_stream_destroy,
|
|
+ .stream_start = haiku_stream_start,
|
|
+ .stream_stop = haiku_stream_stop,
|
|
+ .stream_get_position = haiku_stream_get_position,
|
|
+ .stream_get_latency = haiku_stream_get_latency,
|
|
+ .stream_set_volume = haiku_stream_set_volume,
|
|
+ .stream_set_name = NULL,
|
|
+ .stream_get_current_device = haiku_stream_get_current_device,
|
|
+ .stream_set_input_mute = NULL,
|
|
+ .stream_set_input_processing_params = NULL,
|
|
+ .stream_device_destroy = NULL,
|
|
+ .stream_register_device_changed_callback = NULL,
|
|
+ .register_device_collection_changed = NULL,
|
|
+};
|
|
+
|
|
+// Forward declaration for input thread function
|
|
+static void* input_thread_func(void* user_data);
|
|
+
|
|
+// Stream and Context Structs
|
|
+struct cubeb_stream {
|
|
+ /* Note: Must match cubeb_stream layout in cubeb.c. */
|
|
+ cubeb* context;
|
|
+ void* user_ptr;
|
|
+ /**/
|
|
+
|
|
+ pthread_mutex_t mutex;
|
|
+
|
|
+ cubeb_data_callback data_callback;
|
|
+ cubeb_state_callback state_callback;
|
|
+
|
|
+ // Output related members
|
|
+ cubeb_stream_params output_params;
|
|
+ BSoundPlayer* sound_player;
|
|
+ media_raw_audio_format output_format_haiku;
|
|
+ uint64_t output_position;
|
|
+ bool output_pause;
|
|
+ float output_volume;
|
|
+
|
|
+ // Input related members
|
|
+ cubeb_stream_params input_params;
|
|
+ AudioCapture* audio_capturer;
|
|
+ lock_free_audio_ring_buffer<float>* input_ring_buffer;
|
|
+ float* input_temp_buffer;
|
|
+ size_t input_temp_buffer_frames;
|
|
+ bool input_enabled;
|
|
+ uint32_t input_channels_cubeb;
|
|
+ uint32_t input_channels_capture;
|
|
+
|
|
+ // Input thread (for input-only streams)
|
|
+ pthread_t input_thread;
|
|
+ bool input_thread_running;
|
|
+ bool input_thread_created;
|
|
+
|
|
+ char stream_name[256];
|
|
+};
|
|
+
|
|
+struct cubeb {
|
|
+ struct cubeb_ops const* ops;
|
|
+ pthread_mutex_t mutex;
|
|
+ char context_name[256];
|
|
+};
|
|
+
|
|
+// AudioCapture Callback (Input)
|
|
+static void
|
|
+haiku_audio_input_callback(const float* stereoData, size_t frameCount, void* userData)
|
|
+{
|
|
+ cubeb_stream* stm = static_cast<cubeb_stream*>(userData);
|
|
+
|
|
+ if (!stm || !stm->input_enabled || !stm->input_ring_buffer) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ // AudioCapture always provides stereo (2 channels)
|
|
+ if (stm->input_channels_cubeb == 1 && stm->input_channels_capture == 2) {
|
|
+ float* mono_buffer = (float*)malloc(frameCount * sizeof(float));
|
|
+ if (!mono_buffer) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Failed to allocate mono buffer in capture callback!\n");
|
|
+ return;
|
|
+ }
|
|
+ for (size_t i = 0; i < frameCount; ++i) {
|
|
+ mono_buffer[i] = stereoData[i * 2]; // Take left channel
|
|
+ }
|
|
+ int written_frames = stm->input_ring_buffer->enqueue(mono_buffer, frameCount);
|
|
+ free(mono_buffer);
|
|
+ if (written_frames != (int)frameCount) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Input ring buffer enqueue failed/partial (%d/%zu frames)\n", written_frames, frameCount);
|
|
+ }
|
|
+ } else {
|
|
+ int written_frames = stm->input_ring_buffer->enqueue(const_cast<float*>(stereoData), frameCount);
|
|
+ if (written_frames != (int)frameCount) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Input ring buffer enqueue failed/partial (%d/%zu frames)\n", written_frames, frameCount);
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+// BSoundPlayer Callback (Output)
|
|
+static void
|
|
+haiku_audio_output_callback(void* cookie, void* buffer, size_t size, const media_raw_audio_format& format)
|
|
+{
|
|
+ cubeb_stream* stm = static_cast<cubeb_stream*>(cookie);
|
|
+
|
|
+ if (buffer == nullptr || cookie == nullptr) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Invalid args in output callback\n");
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ long output_frames = 0;
|
|
+ uint32_t output_bytes_per_frame = 0;
|
|
+ if (format.channel_count > 0) {
|
|
+ if (format.format == media_raw_audio_format::B_AUDIO_FLOAT) {
|
|
+ output_bytes_per_frame = format.channel_count * sizeof(float);
|
|
+ } else {
|
|
+ fprintf(stderr, "Cubeb Haiku: Unexpected output format in callback: 0x%x\n", format.format);
|
|
+ memset(buffer, 0, size); // Silence on error
|
|
+ return;
|
|
+ }
|
|
+ if (output_bytes_per_frame > 0) {
|
|
+ output_frames = size / output_bytes_per_frame;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (output_frames <= 0) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Zero frames requested in output callback\n");
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ if (stm->output_pause) {
|
|
+ memset(buffer, 0, size);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ if (pthread_mutex_lock(&stm->mutex) != 0) {
|
|
+ // Failed to lock, mutex error. Output silence
|
|
+ fprintf(stderr, "Cubeb Haiku: Mutex lock failed in output callback\n");
|
|
+ memset(buffer, 0, size);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ void* input_buffer_ptr = nullptr;
|
|
+ long input_frames_read = 0; // Frames read from ring buffer
|
|
+
|
|
+ // Handle input if enabled
|
|
+ if (stm->input_enabled && stm->input_ring_buffer) {
|
|
+ // Ensure temporary input buffer is large enough
|
|
+ if (stm->input_temp_buffer_frames < (size_t)output_frames) {
|
|
+ free(stm->input_temp_buffer);
|
|
+ // Allocate based on channels requested by cubeb
|
|
+ stm->input_temp_buffer = (float*)malloc(output_frames * stm->input_params.channels * sizeof(float));
|
|
+ if (!stm->input_temp_buffer) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Failed to allocate input temp buffer\n");
|
|
+ stm->input_temp_buffer_frames = 0;
|
|
+ memset(buffer, 0, size); // Output silence on error
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
|
|
+ return;
|
|
+ }
|
|
+ stm->input_temp_buffer_frames = output_frames;
|
|
+ }
|
|
+
|
|
+ // Dequeue data from the ring buffer into the temp buffer
|
|
+ input_frames_read = stm->input_ring_buffer->dequeue(stm->input_temp_buffer, output_frames);
|
|
+
|
|
+ if (input_frames_read < output_frames) {
|
|
+ size_t remaining_frames = output_frames - input_frames_read;
|
|
+ size_t offset_samples = input_frames_read * stm->input_params.channels;
|
|
+ memset(stm->input_temp_buffer + offset_samples, 0, remaining_frames * stm->input_params.channels * sizeof(float));
|
|
+ input_frames_read = output_frames; // We filled the gap with silence
|
|
+ }
|
|
+ input_buffer_ptr = stm->input_temp_buffer;
|
|
+ }
|
|
+
|
|
+ // Call the user's data callback
|
|
+ long frames_processed = stm->data_callback(stm, stm->user_ptr,
|
|
+ input_buffer_ptr,
|
|
+ buffer,
|
|
+ output_frames);
|
|
+
|
|
+ // Check callback result
|
|
+ if (frames_processed < 0 || frames_processed > output_frames) {
|
|
+ memset(buffer, 0, size);
|
|
+ stm->output_position += output_frames;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
|
|
+ fprintf(stderr, "Cubeb Haiku: User callback error (%ld/%ld frames)\n", frames_processed, output_frames);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ if (frames_processed < output_frames) {
|
|
+ size_t remaining_frames = output_frames - frames_processed;
|
|
+ size_t offset_bytes = frames_processed * output_bytes_per_frame;
|
|
+ memset((char*)buffer + offset_bytes, 0, remaining_frames * output_bytes_per_frame);
|
|
+ }
|
|
+
|
|
+ stm->output_position += output_frames;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+}
|
|
+
|
|
+// Input Thread Function (for Input-Only streams)
|
|
+static void* input_thread_func(void* user_data) {
|
|
+ cubeb_stream* stm = static_cast<cubeb_stream*>(user_data);
|
|
+ if (!stm || !stm->input_enabled || !stm->input_ring_buffer) {
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ // Target chunk size in frames (e.g., ~20ms)
|
|
+ unsigned int frames_per_iteration = (stm->input_params.rate * 20) / 1000;
|
|
+ if (frames_per_iteration < 128) frames_per_iteration = 128;
|
|
+
|
|
+ // Allocate buffer for reading data from ring buffer
|
|
+ float* read_buffer = (float*)malloc(frames_per_iteration * stm->input_params.channels * sizeof(float));
|
|
+ if (!read_buffer) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Failed to allocate read buffer for input thread\n");
|
|
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
|
|
+ stm->input_thread_running = false;
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ printf("Cubeb Haiku: Input thread started (chunk size: %u frames)\n", frames_per_iteration);
|
|
+
|
|
+ while (stm->input_thread_running) {
|
|
+ // Check available frames without blocking excessively
|
|
+ int frames_available = stm->input_ring_buffer->available_read();
|
|
+
|
|
+ if (frames_available >= (int)frames_per_iteration) {
|
|
+ // Dequeue data
|
|
+ int frames_read = stm->input_ring_buffer->dequeue(read_buffer, frames_per_iteration);
|
|
+
|
|
+ if (frames_read > 0) {
|
|
+ // Lock mutex before calling user callback
|
|
+ if (pthread_mutex_lock(&stm->mutex) == 0) {
|
|
+ long frames_processed = stm->data_callback(stm, stm->user_ptr,
|
|
+ read_buffer,
|
|
+ nullptr,
|
|
+ frames_read);
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+
|
|
+ if (frames_processed < 0 || frames_processed > frames_read) {
|
|
+ fprintf(stderr, "Cubeb Haiku: User callback error in input thread (%ld/%d frames)\n", frames_processed, frames_read);
|
|
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
|
|
+ // Optional: Stop thread on error?
|
|
+ // stm->input_thread_running = false;
|
|
+ }
|
|
+ } else {
|
|
+ fprintf(stderr, "Cubeb Haiku: Mutex lock failed in input thread\n");
|
|
+ }
|
|
+ }
|
|
+ } else {
|
|
+ // Not enough data, wait a bit
|
|
+ usleep(5 * 1000); // Sleep 5ms
|
|
+ }
|
|
+ }
|
|
+
|
|
+ printf("Cubeb Haiku: Input thread stopping.\n");
|
|
+ free(read_buffer);
|
|
+ return NULL;
|
|
+}
|
|
+
|
|
+
|
|
+// Utility Functions
|
|
+
|
|
+static size_t calculate_haiku_buffer_size(cubeb_stream_params* params, unsigned int latency_frames)
|
|
+{
|
|
+ if (!params || params->rate == 0 || params->channels == 0)
|
|
+ return 2048;
|
|
+
|
|
+ return 1024 * params->channels;
|
|
+}
|
|
+
|
|
+
|
|
+static media_raw_audio_format
|
|
+cubeb_format_to_haiku(cubeb_stream_params *params, size_t buffer_size_bytes)
|
|
+{
|
|
+ media_raw_audio_format format;
|
|
+ memset(&format, 0, sizeof(format));
|
|
+ if (!params) return format;
|
|
+
|
|
+ format.frame_rate = params->rate;
|
|
+ format.channel_count = params->channels;
|
|
+ format.buffer_size = buffer_size_bytes;
|
|
+ format.byte_order = B_MEDIA_HOST_ENDIAN;
|
|
+
|
|
+ if (params->format == CUBEB_SAMPLE_FLOAT32NE) {
|
|
+ format.format = media_raw_audio_format::B_AUDIO_FLOAT;
|
|
+ } else {
|
|
+ format.format = 0; // Mark as invalid/unsupported
|
|
+ }
|
|
+ return format;
|
|
+}
|
|
+
|
|
+// Cubeb API Implementation
|
|
+
|
|
+int
|
|
+haiku_init(cubeb** context, char const* context_name)
|
|
+{
|
|
+ *context = NULL;
|
|
+ cubeb* ctx = (cubeb*)calloc(1, sizeof(*ctx));
|
|
+ if (!ctx)
|
|
+ return CUBEB_ERROR;
|
|
+
|
|
+ ctx->ops = &cubeb_haiku_ops;
|
|
+ if (pthread_mutex_init(&ctx->mutex, NULL) != 0) {
|
|
+ free(ctx);
|
|
+ return CUBEB_ERROR;
|
|
+ }
|
|
+
|
|
+ snprintf(ctx->context_name, sizeof(ctx->context_name), "%s", context_name ? context_name : DEFAULT_CONTEXT_NAME);
|
|
+ *context = ctx;
|
|
+
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static void
|
|
+haiku_destroy(cubeb* context)
|
|
+{
|
|
+ if (!context)
|
|
+ return;
|
|
+
|
|
+ pthread_mutex_destroy(&context->mutex);
|
|
+ free(context);
|
|
+}
|
|
+
|
|
+static char const*
|
|
+haiku_get_backend_id(cubeb* context)
|
|
+{
|
|
+ return "haiku";
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_get_max_channel_count(cubeb* ctx, uint32_t* max_channels)
|
|
+{
|
|
+ *max_channels = MAX_CHANNELS;
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_get_min_latency(cubeb* ctx, cubeb_stream_params params, uint32_t* latency_frames)
|
|
+{
|
|
+ if (params.rate == 0)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ *latency_frames = (params.rate * 10) / 1000; // ~10ms
|
|
+ if (*latency_frames < 128) *latency_frames = 128;
|
|
+
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_get_preferred_sample_rate(cubeb* ctx, uint32_t* rate)
|
|
+{
|
|
+ *rate = 48000;
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_stream_init(cubeb* context,
|
|
+ cubeb_stream** stream,
|
|
+ char const* stream_name,
|
|
+ cubeb_devid input_device,
|
|
+ cubeb_stream_params* input_stream_params,
|
|
+ cubeb_devid output_device,
|
|
+ cubeb_stream_params* output_stream_params,
|
|
+ unsigned int latency_frames,
|
|
+ cubeb_data_callback data_callback,
|
|
+ cubeb_state_callback state_callback,
|
|
+ void* user_ptr)
|
|
+{
|
|
+ if (!context || !stream || !data_callback || !state_callback)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ if (!input_stream_params && !output_stream_params)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ if (output_stream_params) {
|
|
+ if (output_stream_params->format != CUBEB_SAMPLE_FLOAT32NE)
|
|
+ return CUBEB_ERROR_INVALID_FORMAT;
|
|
+ if (output_stream_params->rate == 0 || output_stream_params->channels == 0 || output_stream_params->channels > MAX_CHANNELS)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+ if (output_device != NULL && output_device != HAIKU_DEFAULT_OUT_ID)
|
|
+ return CUBEB_ERROR_DEVICE_UNAVAILABLE;
|
|
+ if (output_stream_params->prefs & CUBEB_STREAM_PREF_LOOPBACK)
|
|
+ return CUBEB_ERROR_NOT_SUPPORTED;
|
|
+ }
|
|
+
|
|
+ if (input_stream_params) {
|
|
+ if (input_stream_params->format != CUBEB_SAMPLE_FLOAT32NE)
|
|
+ return CUBEB_ERROR_INVALID_FORMAT;
|
|
+ if (input_stream_params->rate == 0 || input_stream_params->channels == 0 || input_stream_params->channels > MAX_CHANNELS)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+ if (input_device != NULL && input_device != HAIKU_DEFAULT_IN_ID)
|
|
+ return CUBEB_ERROR_DEVICE_UNAVAILABLE;
|
|
+ if (input_stream_params->prefs & CUBEB_STREAM_PREF_LOOPBACK)
|
|
+ return CUBEB_ERROR_NOT_SUPPORTED;
|
|
+ }
|
|
+
|
|
+ if (input_stream_params && output_stream_params && input_stream_params->rate != output_stream_params->rate) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Input/output rate mismatch not supported (%u != %u).\n",
|
|
+ input_stream_params->rate, output_stream_params->rate);
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+ }
|
|
+
|
|
+ // Allocate Stream
|
|
+ *stream = NULL;
|
|
+ cubeb_stream* stm = reinterpret_cast<cubeb_stream *>(calloc(1, sizeof(*stm)));
|
|
+ if (!stm)
|
|
+ return CUBEB_ERROR;
|
|
+
|
|
+ stm->context = context;
|
|
+ stm->user_ptr = user_ptr;
|
|
+ stm->data_callback = data_callback;
|
|
+ stm->state_callback = state_callback;
|
|
+ stm->output_volume = 1.0f;
|
|
+ stm->output_position = 0;
|
|
+ stm->sound_player = nullptr;
|
|
+ stm->audio_capturer = nullptr;
|
|
+ stm->input_ring_buffer = nullptr;
|
|
+ stm->input_temp_buffer = nullptr;
|
|
+ stm->input_temp_buffer_frames = 0;
|
|
+ stm->input_thread_created = false;
|
|
+ stm->input_thread_running = false;
|
|
+
|
|
+ pthread_mutex_lock(&context->mutex);
|
|
+ if (stream_name && strcmp(stream_name, "AudioStream") != 0) {
|
|
+ snprintf(stm->stream_name, sizeof(stm->stream_name), "%s", stream_name);
|
|
+ } else {
|
|
+ snprintf(stm->stream_name, sizeof(stm->stream_name), "%s", context->context_name);
|
|
+ }
|
|
+ pthread_mutex_unlock(&context->mutex);
|
|
+
|
|
+ if (pthread_mutex_init(&stm->mutex, NULL) != 0) {
|
|
+ free(stm);
|
|
+ return CUBEB_ERROR;
|
|
+ }
|
|
+
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+
|
|
+ // Configure Input
|
|
+ if (input_stream_params) {
|
|
+ stm->input_enabled = true;
|
|
+ stm->input_params = *input_stream_params;
|
|
+ stm->input_channels_cubeb = input_stream_params->channels;
|
|
+
|
|
+ uint32_t rate;
|
|
+ haiku_get_preferred_sample_rate(context, &rate);
|
|
+
|
|
+ stm->audio_capturer = new AudioCapture(haiku_audio_input_callback, stm, input_stream_params->rate);
|
|
+ if (!stm->audio_capturer || stm->audio_capturer->Status() != B_OK) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Failed to initialize AudioCapture: %s\n", stm->audio_capturer ? strerror(stm->audio_capturer->Status()) : "alloc failed");
|
|
+ goto init_error;
|
|
+ }
|
|
+
|
|
+ float capture_rate = stm->audio_capturer->TargetSampleRate();
|
|
+ if (abs(capture_rate - input_stream_params->rate) > 1.0f) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Input sample rate mismatch! Requested: %u, Device: %.1f\n", input_stream_params->rate, capture_rate);
|
|
+ goto init_error_format;
|
|
+ }
|
|
+ stm->input_channels_capture = stm->audio_capturer->InputChannelCount();
|
|
+ if (stm->input_channels_cubeb > stm->input_channels_capture) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Requested input channels (%u) > available (%u)\n", stm->input_channels_cubeb, stm->input_channels_capture);
|
|
+ goto init_error_param;
|
|
+ }
|
|
+
|
|
+ // Initialize Ring Buffer
|
|
+ size_t ring_buffer_frames = latency_frames * 8;
|
|
+ if (ring_buffer_frames < 2048)
|
|
+ ring_buffer_frames = 2048;
|
|
+
|
|
+ stm->input_ring_buffer = new lock_free_audio_ring_buffer<float>(stm->input_params.channels, ring_buffer_frames);
|
|
+ if (!stm->input_ring_buffer) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Failed to initialize input ring buffer (alloc)\n");
|
|
+ goto init_error_nomem;
|
|
+ }
|
|
+ } else {
|
|
+ stm->input_enabled = false;
|
|
+ }
|
|
+
|
|
+ // Configure Output
|
|
+ if (output_stream_params) {
|
|
+ stm->output_params = *output_stream_params;
|
|
+ size_t buffer_size_bytes = calculate_haiku_buffer_size(&stm->output_params, latency_frames);
|
|
+ stm->output_format_haiku = cubeb_format_to_haiku(&stm->output_params, buffer_size_bytes);
|
|
+ if (stm->output_format_haiku.format == 0) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Output format mapping failed.\n");
|
|
+ goto init_error_format;
|
|
+ }
|
|
+ } else {
|
|
+ memset(&stm->output_params, 0, sizeof(stm->output_params));
|
|
+ }
|
|
+
|
|
+ *stream = stm;
|
|
+
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+
|
|
+ return CUBEB_OK;
|
|
+
|
|
+// --- Error Handling ---
|
|
+init_error_nomem:
|
|
+ if (stm->audio_capturer) delete stm->audio_capturer;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ pthread_mutex_destroy(&stm->mutex);
|
|
+ free(stm);
|
|
+ return CUBEB_ERROR;
|
|
+
|
|
+init_error_format:
|
|
+ if (stm->audio_capturer) delete stm->audio_capturer;
|
|
+ if (stm->input_ring_buffer) delete stm->input_ring_buffer;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ pthread_mutex_destroy(&stm->mutex);
|
|
+ free(stm);
|
|
+ return CUBEB_ERROR_INVALID_FORMAT;
|
|
+
|
|
+init_error_param:
|
|
+ if (stm->audio_capturer) delete stm->audio_capturer;
|
|
+ if (stm->input_ring_buffer) delete stm->input_ring_buffer;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ pthread_mutex_destroy(&stm->mutex);
|
|
+ free(stm);
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+init_error: // Generic error
|
|
+ if (stm->audio_capturer) delete stm->audio_capturer;
|
|
+ if (stm->input_ring_buffer) delete stm->input_ring_buffer;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ pthread_mutex_destroy(&stm->mutex);
|
|
+ free(stm);
|
|
+ return CUBEB_ERROR;
|
|
+}
|
|
+
|
|
+static void
|
|
+haiku_stream_destroy(cubeb_stream* stm)
|
|
+{
|
|
+ if (!stm)
|
|
+ return;
|
|
+
|
|
+ haiku_stream_stop(stm);
|
|
+
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+
|
|
+ free(stm->input_temp_buffer);
|
|
+
|
|
+ if (stm->audio_capturer)
|
|
+ delete stm->audio_capturer;
|
|
+
|
|
+ if (stm->input_ring_buffer)
|
|
+ delete stm->input_ring_buffer;
|
|
+
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ pthread_mutex_destroy(&stm->mutex);
|
|
+
|
|
+ free(stm);
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_stream_start(cubeb_stream* stm)
|
|
+{
|
|
+ if (!stm)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ int rc = CUBEB_OK;
|
|
+ bool input_started = false, output_started = false;
|
|
+
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+
|
|
+ // Start Input
|
|
+ if (stm->input_enabled && stm->audio_capturer && !stm->audio_capturer->IsRunning()) {
|
|
+ status_t capture_status = stm->audio_capturer->Start();
|
|
+ if (capture_status == B_OK) {
|
|
+ input_started = true;
|
|
+ } else {
|
|
+ fprintf(stderr, "Cubeb Haiku: Failed start AudioCapture: %s\n", strerror(capture_status));
|
|
+ rc = CUBEB_ERROR;
|
|
+ }
|
|
+ } else if (stm->input_enabled && stm->audio_capturer && stm->audio_capturer->IsRunning()) {
|
|
+ input_started = true;
|
|
+ }
|
|
+
|
|
+ // Start Input Thread
|
|
+ if (rc == CUBEB_OK && input_started && !stm->sound_player && stm->output_params.rate == 0 && !stm->input_thread_created) {
|
|
+ stm->input_thread_running = true;
|
|
+ if (pthread_create(&stm->input_thread, NULL, input_thread_func, stm) == 0) {
|
|
+ stm->input_thread_created = true;
|
|
+ } else {
|
|
+ fprintf(stderr, "Cubeb Haiku: Failed create input thread\n");
|
|
+
|
|
+ stm->input_thread_running = false;
|
|
+ rc = CUBEB_ERROR;
|
|
+
|
|
+ if (stm->audio_capturer)
|
|
+ stm->audio_capturer->Stop();
|
|
+
|
|
+ input_started = false;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ // Start Output
|
|
+ if (rc == CUBEB_OK && stm->output_params.rate > 0) {
|
|
+ if (!stm->sound_player) {
|
|
+ stm->sound_player = new BSoundPlayer(&stm->output_format_haiku, stm->stream_name,
|
|
+ haiku_audio_output_callback, nullptr, stm);
|
|
+ if (!stm->sound_player || stm->sound_player->InitCheck() != B_OK) {
|
|
+ fprintf(stderr, "Cubeb Haiku: Failed create BSoundPlayer: %s\n",
|
|
+ stm->sound_player ? strerror(stm->sound_player->InitCheck()) : "alloc failed");
|
|
+ delete stm->sound_player;
|
|
+
|
|
+ stm->sound_player = nullptr;
|
|
+ rc = CUBEB_ERROR;
|
|
+
|
|
+ if (input_started && stm->audio_capturer)
|
|
+ stm->audio_capturer->Stop();
|
|
+
|
|
+ if (stm->input_thread_created)
|
|
+ stm->input_thread_running = false;
|
|
+ } else {
|
|
+ stm->output_pause = false;
|
|
+ stm->sound_player->SetVolume(stm->output_volume);
|
|
+ stm->sound_player->Start();
|
|
+ stm->sound_player->SetHasData(true);
|
|
+ output_started = true;
|
|
+ }
|
|
+ } else {
|
|
+ stm->output_pause = false;
|
|
+ stm->sound_player->SetHasData(true);
|
|
+ output_started = true;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+
|
|
+ // State Callback
|
|
+ if (rc == CUBEB_OK && (input_started || output_started)) {
|
|
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_STARTED);
|
|
+ } else if (rc != CUBEB_OK) {
|
|
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
|
|
+ }
|
|
+
|
|
+ return rc;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_stream_stop(cubeb_stream* stm)
|
|
+{
|
|
+ printf("haiku_stream_stop\n");
|
|
+ if (!stm)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ bool needs_stopped_cb = false;
|
|
+
|
|
+ // Stop Input Thread
|
|
+ if (stm->input_thread_created) {
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+ bool was_running = stm->input_thread_running;
|
|
+ stm->input_thread_running = false;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ if (was_running) {
|
|
+ pthread_join(stm->input_thread, NULL);
|
|
+ needs_stopped_cb = true;
|
|
+ }
|
|
+ stm->input_thread_created = false;
|
|
+ }
|
|
+
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+
|
|
+ // Stop Input Device
|
|
+ if (stm->input_enabled && stm->audio_capturer && stm->audio_capturer->IsRunning()) {
|
|
+ stm->audio_capturer->Stop();
|
|
+ needs_stopped_cb = true;
|
|
+ }
|
|
+
|
|
+ // Stop Output Device
|
|
+ if (stm->sound_player) {
|
|
+ stm->output_pause = true;
|
|
+ stm->sound_player->SetHasData(false);
|
|
+ stm->sound_player->Stop();
|
|
+ delete stm->sound_player;
|
|
+ stm->sound_player = nullptr;
|
|
+ needs_stopped_cb = true;
|
|
+ }
|
|
+
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+
|
|
+ // State Callback
|
|
+ if (needs_stopped_cb)
|
|
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_STOPPED);
|
|
+
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_stream_get_position(cubeb_stream* stm, uint64_t* position)
|
|
+{
|
|
+ if (!stm || !position)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+ *position = stm->output_position;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_stream_get_latency(cubeb_stream* stm, uint32_t* latency_frames)
|
|
+{
|
|
+ if (!stm || !latency_frames) return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+ if (stm->sound_player && stm->output_format_haiku.channel_count > 0) {
|
|
+ uint32_t bytes_per_frame = stm->output_format_haiku.channel_count * sizeof(float);
|
|
+ *latency_frames = (bytes_per_frame > 0) ? (stm->output_format_haiku.buffer_size / bytes_per_frame) : 0;
|
|
+ } else if (stm->input_enabled && stm->input_ring_buffer) {
|
|
+ // Estimate: half ring buffer + capture latency guess
|
|
+ size_t ring_buffer_latency = stm->input_ring_buffer->capacity() / 2;
|
|
+ uint32_t capture_latency_est = (stm->input_params.rate * 15) / 1000; // ~15ms
|
|
+ *latency_frames = capture_latency_est + ring_buffer_latency;
|
|
+ } else { *latency_frames = 0; }
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_stream_set_volume(cubeb_stream* stm, float volume)
|
|
+{
|
|
+ if (!stm)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ float clamped_volume = std::max(0.0f, std::min(1.0f, volume));
|
|
+
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+
|
|
+ stm->output_volume = clamped_volume;
|
|
+
|
|
+ if (stm->sound_player)
|
|
+ stm->sound_player->SetVolume(stm->output_volume);
|
|
+
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+
|
|
+static int
|
|
+haiku_stream_get_current_device(cubeb_stream* stm, cubeb_device** const device)
|
|
+{
|
|
+ if (!stm || !device)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ static cubeb_device output_device_info;
|
|
+ static cubeb_device input_device_info;
|
|
+ static bool static_devices_initialized = false;
|
|
+
|
|
+ if (!static_devices_initialized) {
|
|
+ output_device_info.output_name = (char *)HAIKU_DEFAULT_OUT;
|
|
+ output_device_info.input_name = NULL;
|
|
+ input_device_info.input_name = (char *)HAIKU_DEFAULT_IN;
|
|
+ input_device_info.output_name = NULL;
|
|
+ static_devices_initialized = true;
|
|
+ }
|
|
+
|
|
+ pthread_mutex_lock(&stm->mutex);
|
|
+ bool has_output = (stm->output_params.rate > 0);
|
|
+ bool has_input = stm->input_enabled;
|
|
+ pthread_mutex_unlock(&stm->mutex);
|
|
+
|
|
+ if (has_output) {
|
|
+ *device = &output_device_info;
|
|
+ } else if (has_input) {
|
|
+ *device = &input_device_info;
|
|
+ } else {
|
|
+ return CUBEB_ERROR;
|
|
+ }
|
|
+
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_enumerate_devices(cubeb* context, cubeb_device_type type,
|
|
+ cubeb_device_collection* collection)
|
|
+{
|
|
+ if (!context || !collection)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ collection->device = NULL;
|
|
+ collection->count = 0;
|
|
+ int device_count = 0;
|
|
+
|
|
+ if (type & CUBEB_DEVICE_TYPE_OUTPUT)
|
|
+ device_count++;
|
|
+
|
|
+ if (type & CUBEB_DEVICE_TYPE_INPUT)
|
|
+ device_count++;
|
|
+
|
|
+ if (device_count == 0)
|
|
+ return CUBEB_OK;
|
|
+
|
|
+ cubeb_device_info* devices = (cubeb_device_info*)calloc(device_count, sizeof(cubeb_device_info));
|
|
+ if (!devices)
|
|
+ return CUBEB_ERROR;
|
|
+
|
|
+ uint32_t rate;
|
|
+ haiku_get_preferred_sample_rate(context, &rate);
|
|
+
|
|
+ uint32_t latency;
|
|
+ haiku_get_min_latency(context, {}, &latency);
|
|
+
|
|
+ int current_index = 0;
|
|
+
|
|
+ if (type & CUBEB_DEVICE_TYPE_OUTPUT) {
|
|
+ cubeb_device_info* cur = &devices[current_index++];
|
|
+ cur->devid = HAIKU_DEFAULT_OUT_ID;
|
|
+ cur->device_id = HAIKU_DEFAULT_OUT;
|
|
+ cur->friendly_name = HAIKU_DEFAULT_OUT;
|
|
+ cur->group_id = HAIKU_DEFAULT_OUT;
|
|
+ cur->vendor_name = strdup("MediaKit");
|
|
+ cur->type = CUBEB_DEVICE_TYPE_OUTPUT;
|
|
+ cur->state = CUBEB_DEVICE_STATE_ENABLED;
|
|
+ cur->preferred = CUBEB_DEVICE_PREF_ALL;
|
|
+ cur->format = CUBEB_DEVICE_FMT_F32NE;
|
|
+ cur->default_format = CUBEB_DEVICE_FMT_F32NE;
|
|
+ cur->max_channels = MAX_CHANNELS;
|
|
+ cur->min_rate = rate;
|
|
+ cur->max_rate = rate;
|
|
+ cur->default_rate = rate;
|
|
+ cur->latency_lo = latency;
|
|
+ cur->latency_hi = latency * 4;
|
|
+ collection->count++;
|
|
+ }
|
|
+
|
|
+ if (type & CUBEB_DEVICE_TYPE_INPUT) {
|
|
+ cubeb_device_info* cur = &devices[current_index++];
|
|
+ cur->devid = HAIKU_DEFAULT_IN_ID;
|
|
+ cur->device_id = HAIKU_DEFAULT_IN;
|
|
+ cur->friendly_name = HAIKU_DEFAULT_IN;
|
|
+ cur->group_id = HAIKU_DEFAULT_IN;
|
|
+ cur->vendor_name = strdup("MediaKit");
|
|
+ cur->type = CUBEB_DEVICE_TYPE_INPUT;
|
|
+ cur->state = CUBEB_DEVICE_STATE_ENABLED;
|
|
+ cur->preferred = CUBEB_DEVICE_PREF_ALL;
|
|
+ cur->format = CUBEB_DEVICE_FMT_F32NE;
|
|
+ cur->default_format = CUBEB_DEVICE_FMT_F32NE;
|
|
+ cur->max_channels = MAX_CHANNELS;
|
|
+ cur->min_rate = rate;
|
|
+ cur->max_rate = rate;
|
|
+ cur->default_rate = rate;
|
|
+ cur->latency_lo = latency;
|
|
+ cur->latency_hi = latency * 4;
|
|
+ collection->count++;
|
|
+ }
|
|
+
|
|
+ collection->device = devices;
|
|
+
|
|
+ return CUBEB_OK;
|
|
+}
|
|
+
|
|
+static int
|
|
+haiku_device_collection_destroy(cubeb* context,
|
|
+ cubeb_device_collection* collection)
|
|
+{
|
|
+ if (!context || !collection)
|
|
+ return CUBEB_ERROR_INVALID_PARAMETER;
|
|
+
|
|
+ if (collection->device) {
|
|
+ free(collection->device);
|
|
+ collection->device = NULL;
|
|
+ collection->count = 0;
|
|
+ }
|
|
+
|
|
+ return CUBEB_OK;
|
|
+}
|
|
diff --git a/media/libcubeb/src/moz.build b/media/libcubeb/src/moz.build
|
|
index 7ab524b..4c5fef4 100644
|
|
--- a/media/libcubeb/src/moz.build
|
|
+++ b/media/libcubeb/src/moz.build
|
|
@@ -30,6 +30,7 @@ if CONFIG['MOZ_SUNAUDIO']:
|
|
|
|
if (
|
|
CONFIG["MOZ_PULSEAUDIO"]
|
|
+ or CONFIG["MOZ_HAIKU"]
|
|
or CONFIG["MOZ_JACK"]
|
|
or CONFIG["MOZ_AAUDIO"]
|
|
or CONFIG["MOZ_OPENSL"]
|
|
@@ -102,12 +103,23 @@ if CONFIG['MOZ_OPENSL']:
|
|
SOURCES += ['cubeb_opensl.cpp']
|
|
DEFINES['USE_OPENSL'] = True
|
|
|
|
+if CONFIG['MOZ_HAIKU']:
|
|
+ SOURCES += [
|
|
+ 'cubeb_haiku.cpp',
|
|
+ ]
|
|
+ DEFINES['USE_HAIKU'] = True
|
|
+ OS_LIBS += [
|
|
+ 'media',
|
|
+ 'mediahelpers',
|
|
+ ]
|
|
+
|
|
FINAL_LIBRARY = 'xul'
|
|
|
|
if CONFIG['MOZ_ALSA']:
|
|
CFLAGS += CONFIG['MOZ_ALSA_CFLAGS']
|
|
|
|
CFLAGS += CONFIG['MOZ_JACK_CFLAGS']
|
|
+CFLAGS += CONFIG['MOZ_HAIKU_CFLAGS']
|
|
CFLAGS += CONFIG['MOZ_PULSEAUDIO_CFLAGS']
|
|
|
|
# We allow warnings for third-party code that can be updated from upstream.
|
|
diff --git a/mfbt/Assertions.h b/mfbt/Assertions.h
|
|
index d1b7078..a9400b4 100644
|
|
--- a/mfbt/Assertions.h
|
|
+++ b/mfbt/Assertions.h
|
|
@@ -220,7 +220,7 @@ MOZ_ReportAssertionFailure(const char* aStr, const char* aFilename,
|
|
MOZ_NoReturn(line); \
|
|
} while (false)
|
|
|
|
-#elif __wasi__
|
|
+#elif __wasi__ || defined(__HAIKU__)
|
|
|
|
# define MOZ_REALLY_CRASH(line) __builtin_trap()
|
|
|
|
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
|
|
index 262eee8..872e312 100644
|
|
--- a/modules/libpref/init/StaticPrefList.yaml
|
|
+++ b/modules/libpref/init/StaticPrefList.yaml
|
|
@@ -11872,6 +11872,8 @@
|
|
value: true
|
|
#elif defined(XP_SOLARIS)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -11916,6 +11918,8 @@
|
|
value: true
|
|
#elif defined(XP_SOLARIS)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -11949,6 +11953,8 @@
|
|
value: true
|
|
#elif defined(XP_SOLARIS)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -11968,6 +11974,8 @@
|
|
value: true
|
|
#elif defined(XP_SOLARIS)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -11987,6 +11995,8 @@
|
|
value: true
|
|
#elif defined(XP_SOLARIS)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -12034,6 +12044,8 @@
|
|
value: true
|
|
#elif defined(XP_SOLARIS)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -13042,6 +13054,10 @@
|
|
type: bool
|
|
#if defined(MOZ_WIDGET_ANDROID)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -13140,6 +13156,8 @@
|
|
type: bool
|
|
#if !defined(MOZ_WIDGET_ANDROID)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -13149,6 +13167,8 @@
|
|
type: bool
|
|
#if defined(MOZ_WIDGET_ANDROID)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
@@ -14569,6 +14589,8 @@
|
|
type: RelaxedAtomicBool
|
|
#if !defined(XP_MACOSX)
|
|
value: true
|
|
+#elif defined(XP_HAIKU)
|
|
+ value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
diff --git a/moz.configure b/moz.configure
|
|
index e7f32df..bb56c49 100755
|
|
--- a/moz.configure
|
|
+++ b/moz.configure
|
|
@@ -871,6 +871,8 @@ def strip_flags(flags, profiling, target):
|
|
# On Darwin, it tries to strip things it can't, so we need to limit its scope.
|
|
elif target.kernel == "Darwin":
|
|
return ["-x", "-S"]
|
|
+ elif target.kernel == "Haiku":
|
|
+ return ["--strip-debug"]
|
|
|
|
|
|
set_config("STRIP_FLAGS", strip_flags)
|
|
diff --git a/mozglue/baseprofiler/core/ProfilerUtils.cpp b/mozglue/baseprofiler/core/ProfilerUtils.cpp
|
|
index 517efcb..d896644 100644
|
|
--- a/mozglue/baseprofiler/core/ProfilerUtils.cpp
|
|
+++ b/mozglue/baseprofiler/core/ProfilerUtils.cpp
|
|
@@ -129,6 +129,19 @@ BaseProfilerThreadId profiler_current_thread_id() {
|
|
|
|
} // namespace mozilla::baseprofiler
|
|
|
|
+// ------------------------------------------------------- Haiku
|
|
+# elif defined(XP_HAIKU)
|
|
+
|
|
+# include <OS.h>
|
|
+
|
|
+namespace mozilla::baseprofiler {
|
|
+
|
|
+BaseProfilerThreadId profiler_current_thread_id() {
|
|
+ return BaseProfilerThreadId::FromNativeId(find_thread(NULL));
|
|
+}
|
|
+
|
|
+} // namespace mozilla::baseprofiler
|
|
+
|
|
// ------------------------------------------------------- Others
|
|
# else
|
|
|
|
diff --git a/mozglue/baseprofiler/public/BaseProfilerUtils.h b/mozglue/baseprofiler/public/BaseProfilerUtils.h
|
|
index ab02e03..6d55f37 100644
|
|
--- a/mozglue/baseprofiler/public/BaseProfilerUtils.h
|
|
+++ b/mozglue/baseprofiler/public/BaseProfilerUtils.h
|
|
@@ -66,6 +66,13 @@ namespace mozilla::baseprofiler::detail {
|
|
using ThreadIdType = long;
|
|
} // namespace mozilla::baseprofiler::detail
|
|
|
|
+// ------------------------------------------------------- Haiku
|
|
+# elif defined(XP_HAIKU)
|
|
+
|
|
+namespace mozilla::baseprofiler::detail {
|
|
+using ThreadIdType = int;
|
|
+} // namespace mozilla::baseprofiler::detail
|
|
+
|
|
// ------------------------------------------------------- Others
|
|
# else
|
|
|
|
diff --git a/mozglue/misc/MutexPlatformData_posix.h b/mozglue/misc/MutexPlatformData_posix.h
|
|
index d1659d8..b43e029 100644
|
|
--- a/mozglue/misc/MutexPlatformData_posix.h
|
|
+++ b/mozglue/misc/MutexPlatformData_posix.h
|
|
@@ -11,8 +11,19 @@
|
|
|
|
#include "mozilla/PlatformMutex.h"
|
|
|
|
+#ifdef __HAIKU__
|
|
+
|
|
+struct __attribute__((packed)) mozilla::detail::MutexImpl::PlatformData {
|
|
+ pthread_mutex_t ptMutex;
|
|
+ uint32_t padding;
|
|
+};
|
|
+
|
|
+#else
|
|
+
|
|
struct mozilla::detail::MutexImpl::PlatformData {
|
|
pthread_mutex_t ptMutex;
|
|
};
|
|
|
|
+#endif
|
|
+
|
|
#endif // MutexPlatformData_posix_h
|
|
diff --git a/mozglue/misc/PlatformMutex.h b/mozglue/misc/PlatformMutex.h
|
|
index cf4ec23..92cf202 100644
|
|
--- a/mozglue/misc/PlatformMutex.h
|
|
+++ b/mozglue/misc/PlatformMutex.h
|
|
@@ -46,10 +46,17 @@ class MutexImpl {
|
|
PlatformData* platformData();
|
|
|
|
#if !defined(XP_WIN) && !defined(__wasi__)
|
|
+# ifdef __HAIKU__
|
|
+ void* platformData_[(sizeof(pthread_mutex_t) + sizeof(uint32_t)) / sizeof(void*)];
|
|
+ static_assert((sizeof(pthread_mutex_t) + sizeof(uint32_t)) / sizeof(void*) != 0 &&
|
|
+ (sizeof(pthread_mutex_t) + sizeof(uint32_t)) % sizeof(void*) == 0,
|
|
+ "pthread_mutex_t must have pointer alignment");
|
|
+# else
|
|
void* platformData_[sizeof(pthread_mutex_t) / sizeof(void*)];
|
|
static_assert(sizeof(pthread_mutex_t) / sizeof(void*) != 0 &&
|
|
sizeof(pthread_mutex_t) % sizeof(void*) == 0,
|
|
"pthread_mutex_t must have pointer alignment");
|
|
+#endif
|
|
#else
|
|
void* platformData_[6];
|
|
#endif
|
|
diff --git a/mozglue/misc/TimeStamp_posix.cpp b/mozglue/misc/TimeStamp_posix.cpp
|
|
index 6505d7f..6ec30ce 100644
|
|
--- a/mozglue/misc/TimeStamp_posix.cpp
|
|
+++ b/mozglue/misc/TimeStamp_posix.cpp
|
|
@@ -13,7 +13,9 @@
|
|
// obtained with this API; see TimeDuration::Resolution;
|
|
//
|
|
|
|
-#include <sys/syscall.h>
|
|
+#ifndef __HAIKU__
|
|
+# include <sys/syscall.h>
|
|
+#endif
|
|
#include <time.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
diff --git a/netwerk/base/nsStandardURL.cpp b/netwerk/base/nsStandardURL.cpp
|
|
index 8817b62..ed352ce 100644
|
|
--- a/netwerk/base/nsStandardURL.cpp
|
|
+++ b/netwerk/base/nsStandardURL.cpp
|
|
@@ -319,7 +319,7 @@ struct DumpLeakedURLs {
|
|
};
|
|
|
|
DumpLeakedURLs::~DumpLeakedURLs() {
|
|
- MOZ_ASSERT(NS_IsMainThread());
|
|
+// MOZ_ASSERT(NS_IsMainThread());
|
|
StaticMutexAutoLock lock(gAllURLsMutex);
|
|
if (!gAllURLs.isEmpty()) {
|
|
printf("Leaked URLs:\n");
|
|
diff --git a/netwerk/dns/moz.build b/netwerk/dns/moz.build
|
|
index b2456d2..127baf9 100644
|
|
--- a/netwerk/dns/moz.build
|
|
+++ b/netwerk/dns/moz.build
|
|
@@ -115,3 +115,7 @@ LOCAL_INCLUDES += [
|
|
]
|
|
|
|
USE_LIBS += ["icu"]
|
|
+
|
|
+OS_LIBS += [
|
|
+ "network"
|
|
+]
|
|
diff --git a/netwerk/sctp/src/netinet/sctp.h b/netwerk/sctp/src/netinet/sctp.h
|
|
index 6129e77..be8e413 100644
|
|
--- a/netwerk/sctp/src/netinet/sctp.h
|
|
+++ b/netwerk/sctp/src/netinet/sctp.h
|
|
@@ -35,7 +35,7 @@
|
|
#ifndef _NETINET_SCTP_H_
|
|
#define _NETINET_SCTP_H_
|
|
|
|
-#if defined(__APPLE__) || defined(__linux__)
|
|
+#if defined(__APPLE__) || defined(__linux__) || defined(__HAIKU__)
|
|
#include <stdint.h>
|
|
#endif
|
|
#if defined(__FreeBSD__) && !defined(__Userspace__)
|
|
diff --git a/netwerk/sctp/src/netinet/sctp_input.c b/netwerk/sctp/src/netinet/sctp_input.c
|
|
index a3c1476..6fdae00 100644
|
|
--- a/netwerk/sctp/src/netinet/sctp_input.c
|
|
+++ b/netwerk/sctp/src/netinet/sctp_input.c
|
|
@@ -6310,11 +6310,11 @@ sctp_input_with_port(struct mbuf *i_pak, int off, uint16_t port)
|
|
#if defined(_WIN32) && !defined(__Userspace__)
|
|
NTOHS(ip->ip_len);
|
|
#endif
|
|
-#if defined(__linux__) || (defined(_WIN32) && defined(__Userspace__))
|
|
+#if defined(__linux__) || defined(__HAIKU__) || (defined(_WIN32) && defined(__Userspace__))
|
|
ip->ip_len = ntohs(ip->ip_len);
|
|
#endif
|
|
#if defined(__Userspace__)
|
|
-#if defined(__linux__) || defined(_WIN32)
|
|
+#if defined(__linux__) || defined(_WIN32) || defined(__HAIKU__)
|
|
length = ip->ip_len;
|
|
#else
|
|
length = ip->ip_len + iphlen;
|
|
diff --git a/netwerk/sctp/src/netinet/sctp_os_userspace.h b/netwerk/sctp/src/netinet/sctp_os_userspace.h
|
|
index 493ae02..cd160c5 100644
|
|
--- a/netwerk/sctp/src/netinet/sctp_os_userspace.h
|
|
+++ b/netwerk/sctp/src/netinet/sctp_os_userspace.h
|
|
@@ -1145,7 +1145,7 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a
|
|
|
|
#define SCTP_IS_LISTENING(inp) ((inp->sctp_flags & SCTP_PCB_FLAGS_ACCEPTING) != 0)
|
|
|
|
-#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__EMSCRIPTEN__)
|
|
+#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__HAIKU__) || defined(__EMSCRIPTEN__)
|
|
int
|
|
timingsafe_bcmp(const void *, const void *, size_t);
|
|
#endif
|
|
diff --git a/netwerk/sctp/src/netinet/sctp_userspace.c b/netwerk/sctp/src/netinet/sctp_userspace.c
|
|
index 7188890..fac3e16 100644
|
|
--- a/netwerk/sctp/src/netinet/sctp_userspace.c
|
|
+++ b/netwerk/sctp/src/netinet/sctp_userspace.c
|
|
@@ -94,7 +94,7 @@ sctp_userspace_set_threadname(const char *name)
|
|
#endif
|
|
}
|
|
|
|
-#if !defined(_WIN32) && !defined(__native_client__)
|
|
+#if !defined(_WIN32) && !defined(__HAIKU__) && !defined(__native_client__)
|
|
int
|
|
sctp_userspace_get_mtu_from_ifn(uint32_t if_index)
|
|
{
|
|
@@ -129,7 +129,7 @@ sctp_userspace_get_mtu_from_ifn(uint32_t if_index)
|
|
}
|
|
#endif
|
|
|
|
-#if defined(__native_client__)
|
|
+#if defined(__native_client__) || defined(__HAIKU__)
|
|
int
|
|
sctp_userspace_get_mtu_from_ifn(uint32_t if_index)
|
|
{
|
|
@@ -137,7 +137,7 @@ sctp_userspace_get_mtu_from_ifn(uint32_t if_index)
|
|
}
|
|
#endif
|
|
|
|
-#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(__QNX__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__EMSCRIPTEN__)
|
|
+#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(__QNX__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__HAIKU__) || defined(__EMSCRIPTEN__)
|
|
int
|
|
timingsafe_bcmp(const void *b1, const void *b2, size_t n)
|
|
{
|
|
diff --git a/netwerk/sctp/src/user_environment.c b/netwerk/sctp/src/user_environment.c
|
|
index ea52f0a..85b37ee 100644
|
|
--- a/netwerk/sctp/src/user_environment.c
|
|
+++ b/netwerk/sctp/src/user_environment.c
|
|
@@ -172,7 +172,7 @@ finish_random(void)
|
|
{
|
|
return;
|
|
}
|
|
-#elif (defined(__ANDROID__) && (__ANDROID_API__ < 28)) || defined(__QNX__) || defined(__EMSCRIPTEN__)
|
|
+#elif (defined(__ANDROID__) && (__ANDROID_API__ < 28)) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__HAIKU__)
|
|
#include <fcntl.h>
|
|
|
|
static int fd = -1;
|
|
diff --git a/netwerk/sctp/src/user_socket.c b/netwerk/sctp/src/user_socket.c
|
|
index cde6ecc..0407d01 100644
|
|
--- a/netwerk/sctp/src/user_socket.c
|
|
+++ b/netwerk/sctp/src/user_socket.c
|
|
@@ -50,6 +50,9 @@
|
|
#if defined(__linux__)
|
|
#define __FAVOR_BSD /* (on Ubuntu at least) enables UDP header field names like BSD in RFC 768 */
|
|
#endif
|
|
+#if defined(__HAIKU__)
|
|
+#define UIO_MAXIOV _SC_IOV_MAX
|
|
+#endif
|
|
#if !defined(_WIN32)
|
|
#if defined INET || defined INET6
|
|
#include <netinet/udp.h>
|
|
@@ -1020,7 +1023,7 @@ userspace_sctp_recvmsg(struct socket *so,
|
|
if (error) {
|
|
if ((auio.uio_resid != ulen) &&
|
|
(error == EINTR ||
|
|
-#if !defined(__NetBSD__)
|
|
+#if !defined(__NetBSD__) && !defined(__HAIKU__)
|
|
error == ERESTART ||
|
|
#endif
|
|
error == EWOULDBLOCK)) {
|
|
@@ -1113,7 +1116,7 @@ usrsctp_recvv(struct socket *so,
|
|
if (errno) {
|
|
if ((auio.uio_resid != ulen) &&
|
|
(errno == EINTR ||
|
|
-#if !defined(__NetBSD__)
|
|
+#if !defined(__NetBSD__) && !defined(__HAIKU__)
|
|
errno == ERESTART ||
|
|
#endif
|
|
errno == EWOULDBLOCK)) {
|
|
@@ -1929,7 +1932,7 @@ int user_connect(struct socket *so, struct sockaddr *sa)
|
|
error = pthread_cond_wait(SOCK_COND(so), SOCK_MTX(so));
|
|
#endif
|
|
if (error) {
|
|
-#if defined(__NetBSD__)
|
|
+#if defined(__NetBSD__) || defined(__HAIKU__)
|
|
if (error == EINTR) {
|
|
#else
|
|
if (error == EINTR || error == ERESTART) {
|
|
@@ -1949,7 +1952,7 @@ bad:
|
|
if (!interrupted) {
|
|
so->so_state &= ~SS_ISCONNECTING;
|
|
}
|
|
-#if !defined(__NetBSD__)
|
|
+#if !defined(__NetBSD__) && !defined(__HAIKU__)
|
|
if (error == ERESTART) {
|
|
error = EINTR;
|
|
}
|
|
diff --git a/nsprpub/pr/src/misc/Makefile.in b/nsprpub/pr/src/misc/Makefile.in
|
|
index 3d87da2..64b9b29 100644
|
|
--- a/nsprpub/pr/src/misc/Makefile.in
|
|
+++ b/nsprpub/pr/src/misc/Makefile.in
|
|
@@ -45,6 +45,12 @@ CSRCS += \
|
|
$(NULL)
|
|
endif
|
|
|
|
+ifeq ($OS_ARCH),Haiku)
|
|
+CPPSRCS += \
|
|
+ prhaiku.cpp \
|
|
+ $(NULL)
|
|
+endif
|
|
+
|
|
TARGETS = $(OBJS)
|
|
|
|
INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private
|
|
diff --git a/nsprpub/pr/src/misc/prhaiku.cpp b/nsprpub/pr/src/misc/prhaiku.cpp
|
|
new file mode 100644
|
|
index 0000000..7532003
|
|
--- /dev/null
|
|
+++ b/nsprpub/pr/src/misc/prhaiku.cpp
|
|
@@ -0,0 +1,46 @@
|
|
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
+
|
|
+/*
|
|
+ * Haiku-specific time zone support using native BTimeZone API
|
|
+ */
|
|
+
|
|
+#if defined(__HAIKU__)
|
|
+
|
|
+#pragma GCC visibility push(default)
|
|
+#include <locale/LocaleRoster.h>
|
|
+#include <locale/TimeZone.h>
|
|
+#include <support/String.h>
|
|
+#pragma GCC visibility pop
|
|
+
|
|
+extern "C" {
|
|
+
|
|
+int32_t _PR_Haiku_GetTimeZoneOffset(void) {
|
|
+ BTimeZone timeZone;
|
|
+ if (BLocaleRoster::Default()->GetDefaultTimeZone(&timeZone) != B_OK) {
|
|
+ return 0;
|
|
+ }
|
|
+ return timeZone.OffsetFromGMT();
|
|
+}
|
|
+
|
|
+int32_t _PR_Haiku_GetDSTOffset(int64_t utcTimeInSeconds) {
|
|
+ BTimeZone timeZone;
|
|
+ if (BLocaleRoster::Default()->GetDefaultTimeZone(&timeZone) != B_OK) {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ bigtime_t utcTime = utcTimeInSeconds * 1000000LL;
|
|
+ if (!timeZone.IsDaylightSavingTime(utcTime)) {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ int32_t fullOffset = timeZone.OffsetFromGMT(utcTime);
|
|
+ int32_t standardOffset = timeZone.OffsetFromGMT();
|
|
+ return fullOffset - standardOffset;
|
|
+}
|
|
+
|
|
+} // extern "C"
|
|
+
|
|
+#endif // __HAIKU__
|
|
diff --git a/nsprpub/pr/src/misc/prsystem.c b/nsprpub/pr/src/misc/prsystem.c
|
|
index 863af6b..4994bd4 100644
|
|
--- a/nsprpub/pr/src/misc/prsystem.c
|
|
+++ b/nsprpub/pr/src/misc/prsystem.c
|
|
@@ -234,7 +234,7 @@ PR_IMPLEMENT(PRInt32) PR_GetNumberOfProcessors(void) {
|
|
PR_IMPLEMENT(PRUint64) PR_GetPhysicalMemorySize(void) {
|
|
PRUint64 bytes = 0;
|
|
|
|
-#if defined(LINUX) || defined(SOLARIS)
|
|
+#if defined(LINUX) || defined(SOLARIS) || defined(__HAIKU__)
|
|
|
|
long pageSize = sysconf(_SC_PAGESIZE);
|
|
long pageCount = sysconf(_SC_PHYS_PAGES);
|
|
diff --git a/nsprpub/pr/src/misc/prtime.c b/nsprpub/pr/src/misc/prtime.c
|
|
index 64461c6..698af2a 100644
|
|
--- a/nsprpub/pr/src/misc/prtime.c
|
|
+++ b/nsprpub/pr/src/misc/prtime.c
|
|
@@ -21,6 +21,11 @@
|
|
#include <errno.h> /* for EINVAL */
|
|
#include <time.h>
|
|
|
|
+#if defined(__HAIKU__)
|
|
+extern int32_t _PR_Haiku_GetTimeZoneOffset(void);
|
|
+extern int32_t _PR_Haiku_GetDSTOffset(int64_t utcTimeInSeconds);
|
|
+#endif
|
|
+
|
|
/*
|
|
* The COUNT_LEAPS macro counts the number of leap years passed by
|
|
* till the start of the given year Y. At the start of the year 4
|
|
@@ -556,7 +561,47 @@ void _PR_CleanupTime(void) {
|
|
#endif
|
|
}
|
|
|
|
-#if defined(XP_UNIX) || defined(XP_PC)
|
|
+#if defined(__HAIKU__)
|
|
+
|
|
+PR_IMPLEMENT(PRTimeParameters)
|
|
+PR_LocalTimeParameters(const PRExplodedTime* gmt) {
|
|
+ PRTimeParameters retVal;
|
|
+ PRTime secs64;
|
|
+ PRInt64 usecPerSec;
|
|
+ PRInt64 usecPerSec_1;
|
|
+ PRInt64 maxInt32;
|
|
+ PRInt64 minInt32;
|
|
+ int64_t utcSeconds;
|
|
+
|
|
+ retVal.tp_gmt_offset = _PR_Haiku_GetTimeZoneOffset();
|
|
+
|
|
+ secs64 = PR_ImplodeTime(gmt);
|
|
+ LL_I2L(usecPerSec, PR_USEC_PER_SEC);
|
|
+ LL_I2L(usecPerSec_1, PR_USEC_PER_SEC - 1);
|
|
+
|
|
+ if (LL_GE_ZERO(secs64)) {
|
|
+ LL_DIV(secs64, secs64, usecPerSec);
|
|
+ } else {
|
|
+ LL_NEG(secs64, secs64);
|
|
+ LL_ADD(secs64, secs64, usecPerSec_1);
|
|
+ LL_DIV(secs64, secs64, usecPerSec);
|
|
+ LL_NEG(secs64, secs64);
|
|
+ }
|
|
+
|
|
+ LL_I2L(maxInt32, PR_INT32_MAX);
|
|
+ LL_I2L(minInt32, PR_INT32_MIN);
|
|
+ if (LL_CMP(secs64, >, maxInt32) || LL_CMP(secs64, <, minInt32)) {
|
|
+ retVal.tp_dst_offset = 0;
|
|
+ return retVal;
|
|
+ }
|
|
+
|
|
+ LL_L2I(utcSeconds, secs64);
|
|
+ retVal.tp_dst_offset = _PR_Haiku_GetDSTOffset(utcSeconds);
|
|
+
|
|
+ return retVal;
|
|
+}
|
|
+
|
|
+#elif defined(XP_UNIX) || defined(XP_PC)
|
|
|
|
PR_IMPLEMENT(PRTimeParameters)
|
|
PR_LocalTimeParameters(const PRExplodedTime* gmt) {
|
|
diff --git a/python/mach/mach/site.py b/python/mach/mach/site.py
|
|
index 811e8d2..85302ac 100644
|
|
--- a/python/mach/mach/site.py
|
|
+++ b/python/mach/mach/site.py
|
|
@@ -1520,6 +1520,14 @@ def _create_venv_with_pthfile(
|
|
|
|
_ensure_python_exe(Path(target_venv.python_path).parent)
|
|
|
|
+ if sys.platform.startswith("haiku"):
|
|
+ non_packaged = os.path.join(virtualenv_root, "non-packaged")
|
|
+ os.makedirs(non_packaged, exist_ok=True)
|
|
+ for dir in ("bin", "lib"):
|
|
+ src = os.path.join(virtualenv_root, dir)
|
|
+ dst = os.path.join(non_packaged, dir)
|
|
+ os.symlink(src, dst, target_is_directory=True)
|
|
+
|
|
platlib_site_packages_dir = target_venv.resolve_sysconfig_packages_path("platlib")
|
|
pthfile_contents = "\n".join(pthfile_lines)
|
|
with open(os.path.join(platlib_site_packages_dir, PTH_FILENAME), "w") as f:
|
|
diff --git a/python/mozboot/mozboot/base.py b/python/mozboot/mozboot/base.py
|
|
index 5a133c7..f595526 100644
|
|
--- a/python/mozboot/mozboot/base.py
|
|
+++ b/python/mozboot/mozboot/base.py
|
|
@@ -568,9 +568,13 @@ class BaseBootstrapper:
|
|
|
|
if modern:
|
|
print("Your version of Rust (%s) is new enough." % version)
|
|
+ if sys.platform.startswith("haiku"):
|
|
+ return
|
|
|
|
elif version:
|
|
print("Your version of Rust (%s) is too old." % version)
|
|
+ if sys.platform.startswith("haiku"):
|
|
+ return
|
|
|
|
if rustup and not modern:
|
|
rustup_version = self._parse_version(rustup)
|
|
diff --git a/python/mozboot/mozboot/bootstrap.py b/python/mozboot/mozboot/bootstrap.py
|
|
index ef115f1..618657c 100644
|
|
--- a/python/mozboot/mozboot/bootstrap.py
|
|
+++ b/python/mozboot/mozboot/bootstrap.py
|
|
@@ -34,6 +34,7 @@ from mozboot.centosfedora import CentOSFedoraBootstrapper
|
|
from mozboot.debian import DebianBootstrapper
|
|
from mozboot.freebsd import FreeBSDBootstrapper
|
|
from mozboot.gentoo import GentooBootstrapper
|
|
+from mozboot.haiku import HaikuBootstrapper
|
|
from mozboot.mozconfig import MozconfigBuilder
|
|
from mozboot.mozillabuild import MozillaBuildBootstrapper
|
|
from mozboot.openbsd import OpenBSDBootstrapper
|
|
@@ -311,6 +312,10 @@ class Bootstrapper:
|
|
args["version"] = platform.release()
|
|
args["flavor"] = platform.system()
|
|
|
|
+ elif sys.platform.startswith("haiku"):
|
|
+ cls = HaikuBootstrapper
|
|
+ args["version"] = platform.uname()[2]
|
|
+
|
|
elif sys.platform.startswith("win32") or sys.platform.startswith("msys"):
|
|
if "MOZILLABUILD" in os.environ:
|
|
cls = MozillaBuildBootstrapper
|
|
diff --git a/python/mozboot/mozboot/haiku.py b/python/mozboot/mozboot/haiku.py
|
|
new file mode 100644
|
|
index 0000000..bf8f9fc
|
|
--- /dev/null
|
|
+++ b/python/mozboot/mozboot/haiku.py
|
|
@@ -0,0 +1,59 @@
|
|
+# This Source Code Form is subject to the terms of the Mozilla Public
|
|
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
+# You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
+
|
|
+from mozboot.base import BaseBootstrapper
|
|
+
|
|
+
|
|
+class HaikuBootstrapper(BaseBootstrapper):
|
|
+ def __init__(self, version, **kwargs):
|
|
+ BaseBootstrapper.__init__(self, **kwargs)
|
|
+
|
|
+ self.packages = [
|
|
+ "make",
|
|
+ "pkgconfig",
|
|
+ "rust_bin",
|
|
+ ]
|
|
+
|
|
+ self.browser_packages = [
|
|
+ "dbus_devel",
|
|
+ "dbus_glib_devel",
|
|
+ "gtk3_devel",
|
|
+ "libevent_devel",
|
|
+ "libvpx_devel",
|
|
+ "nasm",
|
|
+ "nodejs20",
|
|
+ "nspr_devel",
|
|
+ ]
|
|
+
|
|
+ def pkgman_install(self, *packages):
|
|
+ command = ["pkgman", "install"]
|
|
+ if self.no_interactive:
|
|
+ command.append("-y")
|
|
+
|
|
+ command.extend(packages)
|
|
+ self.run_as_root(command)
|
|
+
|
|
+ def install_system_packages(self):
|
|
+ self.pkgman_install(*self.packages)
|
|
+
|
|
+ def install_browser_packages(self, mozconfig_builder, artifact_mode=False):
|
|
+ self.pkgman_install(*self.browser_packages)
|
|
+
|
|
+ def install_browser_artifact_mode_packages(self, mozconfig_builder):
|
|
+ self.install_browser_packages(mozconfig_builder, artifact_mode=True)
|
|
+
|
|
+ def ensure_clang_static_analysis_package(self):
|
|
+ # TODO: we don't ship clang base static analysis for this platform
|
|
+ pass
|
|
+
|
|
+ def ensure_stylo_packages(self):
|
|
+ # Clang / llvm already installed as browser package
|
|
+ self.pkgman_install("cbindgen")
|
|
+
|
|
+ def ensure_nasm_packages(self):
|
|
+ # installed via install_browser_packages
|
|
+ pass
|
|
+
|
|
+ def ensure_node_packages(self):
|
|
+ self.pkgman_install("npm")
|
|
diff --git a/python/mozboot/mozboot/util.py b/python/mozboot/mozboot/util.py
|
|
index 058898f..bc473df 100644
|
|
--- a/python/mozboot/mozboot/util.py
|
|
+++ b/python/mozboot/mozboot/util.py
|
|
@@ -13,7 +13,7 @@ from mach.site import PythonVirtualenv
|
|
from mach.util import get_state_dir
|
|
|
|
# Keep in sync with rust-version in top-level Cargo.toml.
|
|
-MINIMUM_RUST_VERSION = "1.90.0"
|
|
+MINIMUM_RUST_VERSION = "1.89.0"
|
|
|
|
|
|
def get_tools_dir(srcdir=False):
|
|
diff --git a/python/mozbuild/mozbuild/configure/constants.py b/python/mozbuild/mozbuild/configure/constants.py
|
|
index 4e60004..7847014 100644
|
|
--- a/python/mozbuild/mozbuild/configure/constants.py
|
|
+++ b/python/mozbuild/mozbuild/configure/constants.py
|
|
@@ -36,6 +36,7 @@ class OS(EnumString):
|
|
"DragonFly",
|
|
"FreeBSD",
|
|
"GNU",
|
|
+ "Haiku",
|
|
"iOS",
|
|
"NetBSD",
|
|
"OpenBSD",
|
|
@@ -51,6 +52,7 @@ class Kernel(EnumString):
|
|
"Darwin",
|
|
"DragonFly",
|
|
"FreeBSD",
|
|
+ "Haiku",
|
|
"kFreeBSD",
|
|
"Linux",
|
|
"NetBSD",
|
|
@@ -140,6 +142,7 @@ kernel_preprocessor_checks = {
|
|
"Darwin": "__APPLE__",
|
|
"DragonFly": "__DragonFly__",
|
|
"FreeBSD": "__FreeBSD__",
|
|
+ "Haiku": "__HAIKU__",
|
|
"kFreeBSD": "__FreeBSD_kernel__",
|
|
"Linux": "__linux__",
|
|
"NetBSD": "__NetBSD__",
|
|
diff --git a/python/mozbuild/mozbuild/vendor/vendor_rust.py b/python/mozbuild/mozbuild/vendor/vendor_rust.py
|
|
index 927d05e..33605fd 100644
|
|
--- a/python/mozbuild/mozbuild/vendor/vendor_rust.py
|
|
+++ b/python/mozbuild/mozbuild/vendor/vendor_rust.py
|
|
@@ -230,8 +230,8 @@ class VendorRust(MozbuildObject):
|
|
# if we go back and forth between vendoring with an older version and
|
|
# a newer version. Only allow the newer versions.
|
|
minimum_rust_version = MINIMUM_RUST_VERSION
|
|
- if LooseVersion("1.90.0") >= MINIMUM_RUST_VERSION:
|
|
- minimum_rust_version = "1.90.0"
|
|
+ if LooseVersion("1.89.0") >= MINIMUM_RUST_VERSION:
|
|
+ minimum_rust_version = "1.89.0"
|
|
if version < minimum_rust_version:
|
|
self.log(
|
|
logging.ERROR,
|
|
diff --git a/security/certverifier/ExtendedValidation.cpp b/security/certverifier/ExtendedValidation.cpp
|
|
index ffd7d37..2ce0dfc 100644
|
|
--- a/security/certverifier/ExtendedValidation.cpp
|
|
+++ b/security/certverifier/ExtendedValidation.cpp
|
|
@@ -1350,7 +1350,9 @@ nsresult LoadExtendedValidationInfo() {
|
|
// The entries for the debug EV roots are at indices 0 through
|
|
// NUM_TEST_EV_ROOTS - 1. Since they're not built-in, they probably
|
|
// haven't been loaded yet.
|
|
+# ifndef __HAIKU__
|
|
MOZ_ASSERT(i < NUM_TEST_EV_ROOTS, "Could not find built-in EV root");
|
|
+# endif
|
|
} else {
|
|
unsigned char certFingerprint[SHA256_LENGTH];
|
|
srv = PK11_HashBuf(SEC_OID_SHA256, certFingerprint, cert->derCert.data,
|
|
diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml
|
|
index 4e61a55..74eecfa 100644
|
|
--- a/supply-chain/audits.toml
|
|
+++ b/supply-chain/audits.toml
|
|
@@ -2959,6 +2959,12 @@ criteria = "safe-to-deploy"
|
|
delta = "0.1.11 -> 0.1.12"
|
|
notes = "Only a minor build tweak."
|
|
|
|
+[[audits.glslopt]]
|
|
+who = "KENZ <KENZ.gelsoft@gmail.com>"
|
|
+criteria = "safe-to-deploy"
|
|
+delta = "0.1.10 -> 0.1.10@git:f9fb33cdab7d55ee0b06fbde64f61be74bd4ef2b"
|
|
+importable = false
|
|
+
|
|
[[audits.goblin]]
|
|
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
|
|
criteria = "safe-to-deploy"
|
|
@@ -3959,6 +3965,12 @@ criteria = "safe-to-deploy"
|
|
version = "0.14.0"
|
|
notes = "Victor and Myk developed this crate at Mozilla."
|
|
|
|
+[[audits.lmdb-rkv-sys]]
|
|
+who = "KENZ <KENZ.gelsoft@gmail.com>"
|
|
+criteria = "safe-to-deploy"
|
|
+delta = "0.11.2 -> 0.11.2@git:9a481259e3b15932bd88bc90a8d7dc49e7ac9cd6"
|
|
+importable = false
|
|
+
|
|
[[audits.lock_api]]
|
|
who = "Mike Hommey <mh+mozilla@glandium.org>"
|
|
criteria = "safe-to-deploy"
|
|
diff --git a/supply-chain/config.toml b/supply-chain/config.toml
|
|
index 89d7130..e56a9eb 100644
|
|
--- a/supply-chain/config.toml
|
|
+++ b/supply-chain/config.toml
|
|
@@ -64,6 +64,10 @@ notes = "Used for testing."
|
|
dependency-criteria = { tokio-reactor = [], tokio-threadpool = [] }
|
|
notes = "The dependencies on tokio-reactor and tokio-threadpools are just a hack to pin the version used by audioipc-{client,server}. Suppress vetting on those for the same reasons behind the policy entries."
|
|
|
|
+[policy.glslopt]
|
|
+audit-as-crates-io = true
|
|
+notes = "Patched version of upstream"
|
|
+
|
|
[policy.gluesmith]
|
|
criteria = "safe-to-run"
|
|
notes = "Used for fuzzing."
|
|
@@ -92,6 +96,10 @@ notes = "Patched version of upstream to avoid unnecessary unused dependencies an
|
|
audit-as-crates-io = false
|
|
notes = "This override is an api-compatible fork with an orthogonal implementation."
|
|
|
|
+[policy.lmdb-rkv-sys]
|
|
+audit-as-crates-io = true
|
|
+notes = "Patched version of upstream"
|
|
+
|
|
[policy.malloc_size_of_derive]
|
|
audit-as-crates-io = false
|
|
notes = "This was originally servo code which Bobby Holley put on crates.io some years ago and that was moved in-tree as first-party code later on."
|
|
diff --git a/taskcluster/kinds/fetch/toolchains.yml b/taskcluster/kinds/fetch/toolchains.yml
|
|
index e1549cd..92bc792 100644
|
|
--- a/taskcluster/kinds/fetch/toolchains.yml
|
|
+++ b/taskcluster/kinds/fetch/toolchains.yml
|
|
@@ -410,8 +410,8 @@ clang-trunk:
|
|
# We build stable rust from source so the resulting compiler acts as a nightly
|
|
# rust compiler, allowing to use unstable features like -Zbuild-std and
|
|
# sanitizers.
|
|
-rust-1.90.0:
|
|
- description: Rust 1.90.0 source code
|
|
+rust-1.89.0:
|
|
+ description: Rust 1.89.0 source code
|
|
fetch:
|
|
type: git
|
|
include-dot-git: true
|
|
diff --git a/testing/mozbase/mozinfo/mozinfo/mozinfo.py b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
|
|
index 06254d9..d61b40a 100755
|
|
--- a/testing/mozbase/mozinfo/mozinfo/mozinfo.py
|
|
+++ b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
|
|
@@ -94,7 +94,7 @@ elif system == "Linux":
|
|
|
|
info["os"] = "linux"
|
|
info["linux_distro"] = distribution
|
|
-elif system in ["DragonFly", "FreeBSD", "NetBSD", "OpenBSD"]:
|
|
+elif system in ["DragonFly", "FreeBSD", "Haiku", "NetBSD", "OpenBSD"]:
|
|
info["os"] = "bsd" # community builds
|
|
version = os_version = sys.platform
|
|
elif system == "Darwin":
|
|
diff --git a/third_party/abseil-cpp/absl/base/internal/sysinfo.cc b/third_party/abseil-cpp/absl/base/internal/sysinfo.cc
|
|
index 1937db3..08fdd1d 100644
|
|
--- a/third_party/abseil-cpp/absl/base/internal/sysinfo.cc
|
|
+++ b/third_party/abseil-cpp/absl/base/internal/sysinfo.cc
|
|
@@ -50,6 +50,10 @@
|
|
#include <zircon/process.h>
|
|
#endif
|
|
|
|
+#if defined(__HAIKU__)
|
|
+#include <OS.h>
|
|
+#endif
|
|
+
|
|
#include <string.h>
|
|
|
|
#include <cassert>
|
|
@@ -475,6 +479,10 @@ pid_t GetTID() {
|
|
return static_cast<pid_t>(zx_thread_self());
|
|
}
|
|
|
|
+#elif defined(__HAIKU__)
|
|
+
|
|
+pid_t GetTID() { return find_thread(NULL); }
|
|
+
|
|
#else
|
|
|
|
// Fallback implementation of `GetTID` using `pthread_self`.
|
|
diff --git a/third_party/abseil-cpp/absl/log/internal/log_message.cc b/third_party/abseil-cpp/absl/log/internal/log_message.cc
|
|
index 8dc5722..44a5e3f 100644
|
|
--- a/third_party/abseil-cpp/absl/log/internal/log_message.cc
|
|
+++ b/third_party/abseil-cpp/absl/log/internal/log_message.cc
|
|
@@ -224,7 +224,7 @@ void LogMessage::LogMessageData::InitializeEncodingAndFormat() {
|
|
EncodeVarint(EventTag::kSeverity,
|
|
ProtoSeverity(entry.log_severity(), entry.verbosity()),
|
|
&encoded_remaining());
|
|
- EncodeVarint(EventTag::kThreadId, entry.tid(), &encoded_remaining());
|
|
+ EncodeVarint(EventTag::kThreadId, (uint32_t)entry.tid(), &encoded_remaining());
|
|
}
|
|
|
|
void LogMessage::LogMessageData::FinalizeEncodingAndFormat() {
|
|
diff --git a/third_party/chromium/build/config/BUILDCONFIG.gn b/third_party/chromium/build/config/BUILDCONFIG.gn
|
|
index 4bb38fe..f42d1e9 100644
|
|
--- a/third_party/chromium/build/config/BUILDCONFIG.gn
|
|
+++ b/third_party/chromium/build/config/BUILDCONFIG.gn
|
|
@@ -206,7 +206,7 @@ if (host_toolchain == "") {
|
|
# TODO(dpranke): Add some sort of assert here that verifies that
|
|
# no toolchain omitted host_toolchain from its toolchain_args().
|
|
|
|
- if (host_os == "linux" || host_os == "openbsd") {
|
|
+ if (host_os == "linux" || host_os == "openbsd" || host_os == "haiku") {
|
|
if (target_os != "linux") {
|
|
host_toolchain = "//chromium/build/toolchain/linux:clang_$host_cpu"
|
|
} else if (is_clang) {
|
|
@@ -246,7 +246,7 @@ if (target_os == "android") {
|
|
# Targeting android on Mac is best-effort and not guaranteed to work.
|
|
#assert(host_os == "linux", "Android builds are only supported on Linux.")
|
|
_default_toolchain = "//chromium/build/toolchain/android:android_clang_$target_cpu"
|
|
-} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd") {
|
|
+} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd" || host_os == "haiku") {
|
|
# See comments in build/toolchain/cros/BUILD.gn about board compiles.
|
|
if (is_clang) {
|
|
_default_toolchain = "//chromium/build/toolchain/linux:clang_$target_cpu"
|
|
@@ -312,6 +312,7 @@ if (custom_toolchain != "") {
|
|
is_android = current_os == "android"
|
|
is_chromeos = current_os == "chromeos"
|
|
is_fuchsia = current_os == "fuchsia"
|
|
+is_haiku = current_os == "haiku"
|
|
is_ios = current_os == "ios"
|
|
is_linux = current_os == "linux"
|
|
is_bsd = current_os == "openbsd"
|
|
diff --git a/third_party/chromium/build/config/gcc/BUILD.gn b/third_party/chromium/build/config/gcc/BUILD.gn
|
|
index 6e291bb..89c0f24 100644
|
|
--- a/third_party/chromium/build/config/gcc/BUILD.gn
|
|
+++ b/third_party/chromium/build/config/gcc/BUILD.gn
|
|
@@ -93,7 +93,7 @@ if (is_component_build && !is_android) {
|
|
# Settings for executables.
|
|
config("executable_config") {
|
|
configs = executable_and_shared_library_configs_
|
|
- ldflags = [ "-pie" ]
|
|
+ ldflags = [ "-fPIC" ]
|
|
if (is_android) {
|
|
ldflags += [
|
|
"-Bdynamic",
|
|
diff --git a/third_party/chromium/build/config/ozone.gni b/third_party/chromium/build/config/ozone.gni
|
|
index 9d98d89..0bd4076 100644
|
|
--- a/third_party/chromium/build/config/ozone.gni
|
|
+++ b/third_party/chromium/build/config/ozone.gni
|
|
@@ -8,7 +8,7 @@ import("//chromium/build/toolchain/toolchain.gni")
|
|
declare_args() {
|
|
# Indicates if Ozone is enabled. Ozone is a low-level library layer for Linux
|
|
# that does not require X11.
|
|
- use_ozone = is_chromeos || is_fuchsia || is_linux || is_bsd
|
|
+ use_ozone = is_chromeos || is_fuchsia || is_linux || is_bsd || is_haiku
|
|
}
|
|
|
|
declare_args() {
|
|
@@ -76,6 +76,11 @@ declare_args() {
|
|
} else {
|
|
ozone_platform = "cast"
|
|
}
|
|
+ } else if (is_haiku) {
|
|
+ ozone_platform = "wayland"
|
|
+ ozone_platform_drm = false
|
|
+ ozone_platform_x11 = false
|
|
+ ozone_platform_wayland = true
|
|
} else if (is_chromeos) {
|
|
ozone_platform = "x11"
|
|
ozone_platform_drm = true
|
|
diff --git a/third_party/chromium/build/toolchain/siso.gni b/third_party/chromium/build/toolchain/siso.gni
|
|
index 94055d5..6f11061 100644
|
|
--- a/third_party/chromium/build/toolchain/siso.gni
|
|
+++ b/third_party/chromium/build/toolchain/siso.gni
|
|
@@ -1,30 +1,11 @@
|
|
-# Defines the configuration of siso (next-gen build system)
|
|
+# Copyright 2023 The Chromium Authors
|
|
+# Use of this source code is governed by a BSD-style license that can be
|
|
+# found in the LICENSE file.
|
|
|
|
-import("//chromium/build/config/gclient_args.gni")
|
|
-
|
|
-# use_siso_default is default value of use_siso.
|
|
-# need to match with autoninja's logic.
|
|
-use_siso_default = false
|
|
-
|
|
-_is_google_corp_machine = false
|
|
-if (path_exists("/usr/bin/gcert") || # linux
|
|
- path_exists("/usr/local/bin/gcert") || # mac
|
|
- path_exists("/c:/gnubby/bin/gcert.exe")) {
|
|
- _is_google_corp_machine = true
|
|
-}
|
|
-
|
|
-_is_ninja_used = path_exists(rebase_path(".ninja_deps", root_build_dir))
|
|
-
|
|
-if (path_exists("//chromium/build/config/siso/.sisoenv") &&
|
|
- defined(build_with_chromium) && build_with_chromium &&
|
|
- _is_google_corp_machine && !_is_ninja_used) {
|
|
- use_siso_default = true
|
|
-}
|
|
+# Configuration for AnyAsk/SISO build system
|
|
+# Disabled for Haiku - path_exists() not supported
|
|
|
|
declare_args() {
|
|
- # Placeholder to allow having use_siso in args.gn file.
|
|
- # Explicit `use_siso` in args.gn can override default.
|
|
- # This is used only for autoninja (to dispatch siso or ninja),
|
|
- # and for use_reclient's default.
|
|
- use_siso = use_siso_default
|
|
+ # Disable SISO for Haiku build
|
|
+ use_siso = false
|
|
}
|
|
diff --git a/third_party/chromium/build/toolchain/toolchain.gni b/third_party/chromium/build/toolchain/toolchain.gni
|
|
index 754f0e3..185b04f 100644
|
|
--- a/third_party/chromium/build/toolchain/toolchain.gni
|
|
+++ b/third_party/chromium/build/toolchain/toolchain.gni
|
|
@@ -75,7 +75,7 @@ if (host_os == "mac") {
|
|
host_shlib_extension = ".dylib"
|
|
} else if (host_os == "win") {
|
|
host_shlib_extension = ".dll"
|
|
-} else if (host_os == "linux" || host_os == "aix" || host_os == "zos") {
|
|
+} else if (host_os == "linux" || host_os == "aix" || host_os == "zos" || host_os == "haiku") {
|
|
host_shlib_extension = ".so"
|
|
} else {
|
|
assert(false, "Host platform not supported")
|
|
diff --git a/third_party/dav1d/src/thread.h b/third_party/dav1d/src/thread.h
|
|
index 459aace..b2989da 100644
|
|
--- a/third_party/dav1d/src/thread.h
|
|
+++ b/third_party/dav1d/src/thread.h
|
|
@@ -177,14 +177,14 @@ static inline void dav1d_set_thread_name(const char *const name) {
|
|
pthread_set_name_np(pthread_self(), name);
|
|
}
|
|
|
|
-#elif defined(__HAIKU__)
|
|
-
|
|
-#include <os/kernel/OS.h>
|
|
-
|
|
-static inline void dav1d_set_thread_name(const char *const name) {
|
|
- rename_thread(find_thread(NULL), name);
|
|
-}
|
|
-
|
|
+//#elif defined(__HAIKU__)
|
|
+//
|
|
+//#include <os/kernel/OS.h>
|
|
+//
|
|
+//static inline void dav1d_set_thread_name(const char *const name) {
|
|
+// rename_thread(find_thread(NULL), name);
|
|
+//}
|
|
+//
|
|
#else
|
|
|
|
#define dav1d_set_thread_name(name) do {} while (0)
|
|
diff --git a/third_party/libepoxy/libepoxy/src/dispatch_common.c b/third_party/libepoxy/libepoxy/src/dispatch_common.c
|
|
index 9f3dac4..e5ef5a8 100644
|
|
--- a/third_party/libepoxy/libepoxy/src/dispatch_common.c
|
|
+++ b/third_party/libepoxy/libepoxy/src/dispatch_common.c
|
|
@@ -306,8 +306,10 @@ get_dlopen_handle(void **handle, const char *lib_name, bool exit_on_fail, bool l
|
|
pthread_mutex_lock(&api.mutex);
|
|
if (!*handle) {
|
|
int flags = RTLD_LAZY | RTLD_LOCAL;
|
|
+#ifndef __HAIKU__
|
|
if (!load)
|
|
flags |= RTLD_NOLOAD;
|
|
+#endif
|
|
|
|
*handle = dlopen(lib_name, flags);
|
|
if (!*handle) {
|
|
diff --git a/third_party/libwebrtc/.gn b/third_party/libwebrtc/.gn
|
|
index e30bfef..dfa911b 100644
|
|
--- a/third_party/libwebrtc/.gn
|
|
+++ b/third_party/libwebrtc/.gn
|
|
@@ -35,8 +35,8 @@ no_check_targets = [
|
|
# These are the list of GN files that run exec_script. This allowlist exists
|
|
# to force additional review for new uses of exec_script, which is strongly
|
|
# discouraged except for gypi_to_gn calls.
|
|
-exec_script_allowlist = build_dotfile_settings.exec_script_allowlist +
|
|
- [ "//build_overrides/build.gni" ]
|
|
+#exec_script_allowlist = build_dotfile_settings.exec_script_allowlist +
|
|
+# [ "//build_overrides/build.gni" ]
|
|
|
|
# Normally, we'd use 'if (!build_with_mozilla)', but that flag isn't
|
|
# available yet.
|
|
diff --git a/third_party/libwebrtc/BUILD.gn b/third_party/libwebrtc/BUILD.gn
|
|
index 487897d..9b50842 100644
|
|
--- a/third_party/libwebrtc/BUILD.gn
|
|
+++ b/third_party/libwebrtc/BUILD.gn
|
|
@@ -213,7 +213,7 @@ config("common_inherited_config") {
|
|
target_gen_dir,
|
|
]
|
|
}
|
|
- if (is_posix || is_fuchsia) {
|
|
+ if (is_posix || is_fuchsia || is_haiku) {
|
|
defines += [ "WEBRTC_POSIX" ]
|
|
}
|
|
if (is_ios) {
|
|
@@ -222,7 +222,7 @@ config("common_inherited_config") {
|
|
"WEBRTC_IOS",
|
|
]
|
|
}
|
|
- if (is_linux || is_chromeos) {
|
|
+ if ((is_linux && !is_haiku) || is_chromeos) {
|
|
defines += [ "WEBRTC_LINUX" ]
|
|
}
|
|
if (is_bsd) {
|
|
@@ -234,6 +234,9 @@ config("common_inherited_config") {
|
|
if (is_fuchsia) {
|
|
defines += [ "WEBRTC_FUCHSIA" ]
|
|
}
|
|
+ if (is_haiku) {
|
|
+ defines += [ "WEBRTC_HAIKU", "_BSD_SOURCE" ]
|
|
+ }
|
|
if (is_win) {
|
|
defines += [ "WEBRTC_WIN" ]
|
|
}
|
|
diff --git a/third_party/libwebrtc/modules/desktop_capture/BUILD.gn b/third_party/libwebrtc/modules/desktop_capture/BUILD.gn
|
|
index aa174d5..7c0d653 100644
|
|
--- a/third_party/libwebrtc/modules/desktop_capture/BUILD.gn
|
|
+++ b/third_party/libwebrtc/modules/desktop_capture/BUILD.gn
|
|
@@ -356,6 +356,19 @@ rtc_library("desktop_capture") {
|
|
]
|
|
}
|
|
|
|
+ if (is_haiku) {
|
|
+ sources += [
|
|
+ "haiku/screen_capturer_haiku_impl.cc",
|
|
+ "screen_capturer_haiku.cc",
|
|
+ "mouse_cursor_monitor_haiku.cc",
|
|
+ "window_capturer_haiku.cc",
|
|
+ ]
|
|
+ libs = [
|
|
+ "be",
|
|
+ "game",
|
|
+ ]
|
|
+ }
|
|
+
|
|
if (rtc_use_x11_extensions) {
|
|
sources += [
|
|
"linux/x11/mouse_cursor_monitor_x11.cc",
|
|
@@ -403,7 +416,7 @@ rtc_library("desktop_capture") {
|
|
}
|
|
|
|
if (!is_win && !is_mac && !rtc_use_x11_extensions && !rtc_use_pipewire &&
|
|
- !is_fuchsia) {
|
|
+ !is_fuchsia && !is_haiku) {
|
|
sources += [
|
|
"mouse_cursor_monitor_null.cc",
|
|
"screen_capturer_null.cc",
|
|
diff --git a/third_party/libwebrtc/modules/desktop_capture/haiku/screen_capturer_haiku_impl.cc b/third_party/libwebrtc/modules/desktop_capture/haiku/screen_capturer_haiku_impl.cc
|
|
new file mode 100644
|
|
index 0000000..fe5b937
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/desktop_capture/haiku/screen_capturer_haiku_impl.cc
|
|
@@ -0,0 +1,111 @@
|
|
+/*
|
|
+ * Copyright 2025 Gerasim Troeglazov
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#include "modules/desktop_capture/haiku/screen_capturer_haiku_impl.h"
|
|
+
|
|
+#include <stdint.h>
|
|
+#include <string.h>
|
|
+
|
|
+#include <memory>
|
|
+#include <utility>
|
|
+
|
|
+#include "modules/desktop_capture/desktop_capture_options.h"
|
|
+#include "modules/desktop_capture/desktop_capturer.h"
|
|
+#include "modules/desktop_capture/desktop_frame.h"
|
|
+#include "modules/desktop_capture/desktop_geometry.h"
|
|
+#include "modules/desktop_capture/screen_capture_frame_queue.h"
|
|
+#include "modules/desktop_capture/screen_capturer_helper.h"
|
|
+#include "modules/desktop_capture/shared_desktop_frame.h"
|
|
+#include "rtc_base/checks.h"
|
|
+#include "rtc_base/logging.h"
|
|
+#include "rtc_base/sanitizer.h"
|
|
+#include "rtc_base/time_utils.h"
|
|
+#include "rtc_base/trace_event.h"
|
|
+
|
|
+#define MAX_FPS 5
|
|
+
|
|
+namespace webrtc {
|
|
+
|
|
+namespace {
|
|
+
|
|
+static constexpr DesktopCapturer::SourceId kDirectScreenId = 1;
|
|
+static constexpr DesktopCapturer::SourceId kGetBitmapScreenId = 2;
|
|
+
|
|
+}
|
|
+
|
|
+ScreenCapturerHaiku::ScreenCapturerHaiku() {
|
|
+ screen_ = new BScreen(B_MAIN_SCREEN_ID);
|
|
+ bitmap_ = new BBitmap(screen_->Frame(), B_RGB32);
|
|
+ memset(bitmap_->Bits(), 0, bitmap_->BitsLength());
|
|
+ reader_ = new ScreenReader(screen_);
|
|
+ reader_->Show();
|
|
+}
|
|
+
|
|
+ScreenCapturerHaiku::~ScreenCapturerHaiku() {
|
|
+ reader_->Lock();
|
|
+ reader_->Quit();
|
|
+ delete screen_;
|
|
+ delete bitmap_;
|
|
+}
|
|
+
|
|
+bool ScreenCapturerHaiku::Init(const DesktopCaptureOptions& options) {
|
|
+ options_ = options;
|
|
+ return true;
|
|
+}
|
|
+
|
|
+void ScreenCapturerHaiku::Start(Callback* callback) {
|
|
+ RTC_DCHECK(!callback_);
|
|
+ RTC_DCHECK(callback);
|
|
+ callback_ = callback;
|
|
+ lastShot_ = system_time();
|
|
+}
|
|
+
|
|
+void ScreenCapturerHaiku::CaptureFrame() {
|
|
+ int64_t capture_start_time_nanos = TimeNanos();
|
|
+ bigtime_t now_ = system_time();
|
|
+ if (now_ - lastShot_ > 1000000 / MAX_FPS) {
|
|
+ reader_->ReadBitmap(bitmap_, id_ == kDirectScreenId);
|
|
+ lastShot_ = now_;
|
|
+ }
|
|
+ DesktopRect r = DesktopRect::MakeXYWH(0, 0, bitmap_->Bounds().Width() + 1, bitmap_->Bounds().Height() + 1);
|
|
+ std::unique_ptr<DesktopFrame> frame(new BasicDesktopFrame(r.size()));
|
|
+ frame->CopyPixelsFrom((const uint8_t*)bitmap_->Bits(), bitmap_->BytesPerRow(), r);
|
|
+ frame->set_capture_time_ms((TimeNanos() - capture_start_time_nanos) / kNumNanosecsPerMillisec);
|
|
+ callback_->OnCaptureResult(Result::SUCCESS, std::move(frame));
|
|
+}
|
|
+
|
|
+bool ScreenCapturerHaiku::GetSourceList(SourceList* sources) {
|
|
+ sources->push_back({kDirectScreenId, 0, std::string("Active Desktop (BDirectWindow)")});
|
|
+ sources->push_back({kGetBitmapScreenId, 1, std::string("Active Desktop (GetBitmap)")});
|
|
+ return true;
|
|
+}
|
|
+
|
|
+bool ScreenCapturerHaiku::SelectSource(SourceId id) {
|
|
+ if (id != kDirectScreenId && id != kGetBitmapScreenId)
|
|
+ return false;
|
|
+
|
|
+ id_ = id;
|
|
+
|
|
+ return true;
|
|
+}
|
|
+
|
|
+
|
|
+// static
|
|
+std::unique_ptr<DesktopCapturer> ScreenCapturerHaiku::CreateRawScreenCapturer(
|
|
+ const DesktopCaptureOptions& options) {
|
|
+ std::unique_ptr<ScreenCapturerHaiku> capturer(new ScreenCapturerHaiku());
|
|
+ if (!capturer.get()->Init(options)) {
|
|
+ return nullptr;
|
|
+ }
|
|
+
|
|
+ return std::move(capturer);
|
|
+}
|
|
+
|
|
+} // namespace webrtc
|
|
diff --git a/third_party/libwebrtc/modules/desktop_capture/haiku/screen_capturer_haiku_impl.h b/third_party/libwebrtc/modules/desktop_capture/haiku/screen_capturer_haiku_impl.h
|
|
new file mode 100644
|
|
index 0000000..1f2dbd6
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/desktop_capture/haiku/screen_capturer_haiku_impl.h
|
|
@@ -0,0 +1,96 @@
|
|
+/*
|
|
+ * Copyright 2025 Gerasim Troeglazov
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#ifndef MODULES_DESKTOP_CAPTURE_HAIKU_SCREEN_CAPTURER_HAIKU_H_
|
|
+#define MODULES_DESKTOP_CAPTURE_HAIKU_SCREEN_CAPTURER_HAIKU_H_
|
|
+
|
|
+#include <memory>
|
|
+
|
|
+#include "modules/desktop_capture/desktop_capture_options.h"
|
|
+#include "modules/desktop_capture/desktop_capturer.h"
|
|
+#include "modules/desktop_capture/desktop_frame.h"
|
|
+#include "modules/desktop_capture/desktop_region.h"
|
|
+#include "modules/desktop_capture/screen_capture_frame_queue.h"
|
|
+#include "modules/desktop_capture/screen_capturer_helper.h"
|
|
+#include "modules/desktop_capture/shared_desktop_frame.h"
|
|
+
|
|
+#pragma GCC visibility push(default)
|
|
+#include <kernel/OS.h>
|
|
+#include <interface/Screen.h>
|
|
+#include <interface/Bitmap.h>
|
|
+#include <DirectWindow.h>
|
|
+#include <SupportDefs.h>
|
|
+#pragma GCC visibility pop
|
|
+
|
|
+namespace webrtc {
|
|
+
|
|
+class ScreenReader: public BDirectWindow {
|
|
+public:
|
|
+ ScreenReader(BScreen *screen) : BDirectWindow(BRect(-2, -2, -1, -1), "DirectWindow",
|
|
+ B_NO_BORDER_WINDOW_LOOK, window_feel(1025),
|
|
+ B_AVOID_FRONT | B_AVOID_FOCUS | B_NO_WORKSPACE_ACTIVATION,
|
|
+ B_ALL_WORKSPACES), fScreen(screen), fDirectAvailable(false) { };
|
|
+ virtual void DirectConnected(direct_buffer_info *info) {
|
|
+ switch (info->buffer_state & B_DIRECT_MODE_MASK) {
|
|
+ case B_DIRECT_START:
|
|
+ case B_DIRECT_MODIFY:
|
|
+ fDirectInfo = *info;
|
|
+ fDirectAvailable = true;
|
|
+ break;
|
|
+ case B_DIRECT_STOP:
|
|
+ fDirectAvailable = false;
|
|
+ break;
|
|
+ default:
|
|
+ break;
|
|
+ }
|
|
+ };
|
|
+ status_t ReadBitmap(BBitmap *bitmap, bool direct) {
|
|
+ if (direct && fDirectAvailable) {
|
|
+ memcpy(bitmap->Bits(), fDirectInfo.bits, bitmap->BitsLength());
|
|
+ return B_OK;
|
|
+ }
|
|
+ return fScreen->ReadBitmap(bitmap);
|
|
+};
|
|
+private:
|
|
+ BScreen* fScreen;
|
|
+ direct_buffer_info fDirectInfo;
|
|
+ bool fDirectAvailable;
|
|
+};
|
|
+
|
|
+class ScreenCapturerHaiku : public DesktopCapturer {
|
|
+ public:
|
|
+ ScreenCapturerHaiku();
|
|
+ ~ScreenCapturerHaiku() override;
|
|
+
|
|
+ static std::unique_ptr<DesktopCapturer> CreateRawScreenCapturer(
|
|
+ const DesktopCaptureOptions& options);
|
|
+
|
|
+ bool Init(const DesktopCaptureOptions& options);
|
|
+
|
|
+ void Start(Callback* delegate) override;
|
|
+ void CaptureFrame() override;
|
|
+ bool GetSourceList(SourceList* sources) override;
|
|
+ bool SelectSource(SourceId id) override;
|
|
+
|
|
+ private:
|
|
+ BScreen* screen_;
|
|
+ BBitmap* bitmap_;
|
|
+ ScreenReader *reader_;
|
|
+ bigtime_t lastShot_;
|
|
+
|
|
+ SourceId id_;
|
|
+
|
|
+ DesktopCaptureOptions options_;
|
|
+ Callback* callback_ = nullptr;
|
|
+};
|
|
+
|
|
+}
|
|
+
|
|
+#endif // MODULES_DESKTOP_CAPTURE_HAIKU_SCREEN_CAPTURER_HAIKU_H_
|
|
diff --git a/third_party/libwebrtc/modules/desktop_capture/mouse_cursor_monitor_haiku.cc b/third_party/libwebrtc/modules/desktop_capture/mouse_cursor_monitor_haiku.cc
|
|
new file mode 100644
|
|
index 0000000..8ea2aa2
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/desktop_capture/mouse_cursor_monitor_haiku.cc
|
|
@@ -0,0 +1,39 @@
|
|
+/*
|
|
+ * Copyright 2018 The WebRTC project authors. All Rights Reserved.
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#include <memory>
|
|
+
|
|
+#include "modules/desktop_capture/desktop_capture_types.h"
|
|
+#include "modules/desktop_capture/mouse_cursor_monitor.h"
|
|
+//#include "modules/desktop_capture/haiku/mouse_cursor_monitor.h"
|
|
+
|
|
+namespace webrtc {
|
|
+
|
|
+// static
|
|
+MouseCursorMonitor* MouseCursorMonitor::CreateForWindow(
|
|
+ const DesktopCaptureOptions& options,
|
|
+ WindowId window) {
|
|
+ return nullptr;
|
|
+}
|
|
+
|
|
+// static
|
|
+MouseCursorMonitor* MouseCursorMonitor::CreateForScreen(
|
|
+ const DesktopCaptureOptions& options,
|
|
+ ScreenId screen) {
|
|
+ return nullptr;
|
|
+}
|
|
+
|
|
+// static
|
|
+std::unique_ptr<MouseCursorMonitor> MouseCursorMonitor::Create(
|
|
+ const DesktopCaptureOptions& options) {
|
|
+ return nullptr;
|
|
+}
|
|
+
|
|
+} // namespace webrtc
|
|
diff --git a/third_party/libwebrtc/modules/desktop_capture/screen_capturer_haiku.cc b/third_party/libwebrtc/modules/desktop_capture/screen_capturer_haiku.cc
|
|
new file mode 100644
|
|
index 0000000..e30fb04
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/desktop_capture/screen_capturer_haiku.cc
|
|
@@ -0,0 +1,26 @@
|
|
+/*
|
|
+ * Copyright 2021 Gerasim Troeglazov
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#include <memory>
|
|
+
|
|
+#include "modules/desktop_capture/desktop_capture_options.h"
|
|
+#include "modules/desktop_capture/desktop_capturer.h"
|
|
+
|
|
+#include "modules/desktop_capture/haiku/screen_capturer_haiku_impl.h"
|
|
+
|
|
+namespace webrtc {
|
|
+
|
|
+// static
|
|
+std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
|
|
+ const DesktopCaptureOptions& options) {
|
|
+ return ScreenCapturerHaiku::CreateRawScreenCapturer(options);
|
|
+}
|
|
+
|
|
+} // namespace webrtc
|
|
diff --git a/third_party/libwebrtc/modules/desktop_capture/window_capturer_haiku.cc b/third_party/libwebrtc/modules/desktop_capture/window_capturer_haiku.cc
|
|
new file mode 100644
|
|
index 0000000..a89b4a1
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/desktop_capture/window_capturer_haiku.cc
|
|
@@ -0,0 +1,64 @@
|
|
+/*
|
|
+ * Copyright 2021 Gerasim Troeglazov
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#include "modules/desktop_capture/desktop_capturer.h"
|
|
+#include "modules/desktop_capture/desktop_frame.h"
|
|
+
|
|
+#include <assert.h>
|
|
+
|
|
+namespace webrtc {
|
|
+
|
|
+namespace {
|
|
+
|
|
+class WindowCapturerHaiku : public DesktopCapturer {
|
|
+ public:
|
|
+ WindowCapturerHaiku();
|
|
+ ~WindowCapturerHaiku() override;
|
|
+
|
|
+ void Start(Callback* callback) override;
|
|
+ void CaptureFrame() override;
|
|
+ bool GetSourceList(SourceList* sources) override;
|
|
+ bool SelectSource(SourceId id) override;
|
|
+
|
|
+ private:
|
|
+ Callback* callback_ = nullptr;
|
|
+};
|
|
+
|
|
+WindowCapturerHaiku::WindowCapturerHaiku() {}
|
|
+WindowCapturerHaiku::~WindowCapturerHaiku() {}
|
|
+
|
|
+bool WindowCapturerHaiku::GetSourceList(SourceList* sources) {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+bool WindowCapturerHaiku::SelectSource(SourceId id) {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+void WindowCapturerHaiku::Start(Callback* callback) {
|
|
+ assert(!callback_);
|
|
+ assert(callback);
|
|
+
|
|
+ callback_ = callback;
|
|
+}
|
|
+
|
|
+void WindowCapturerHaiku::CaptureFrame() {
|
|
+ callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
|
|
+}
|
|
+
|
|
+} // namespace
|
|
+
|
|
+// static
|
|
+std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
|
|
+ const DesktopCaptureOptions& options) {
|
|
+ return std::unique_ptr<DesktopCapturer>(new WindowCapturerHaiku());
|
|
+}
|
|
+
|
|
+} // namespace webrtc
|
|
diff --git a/third_party/libwebrtc/modules/video_capture/BUILD.gn b/third_party/libwebrtc/modules/video_capture/BUILD.gn
|
|
index e32e3ab..d8075f5 100644
|
|
--- a/third_party/libwebrtc/modules/video_capture/BUILD.gn
|
|
+++ b/third_party/libwebrtc/modules/video_capture/BUILD.gn
|
|
@@ -145,6 +145,20 @@ if (!build_with_chromium || is_linux || is_chromeos) {
|
|
if (is_fuchsia) {
|
|
sources += [ "video_capture_factory_null.cc" ]
|
|
}
|
|
+ if (is_haiku) {
|
|
+ sources += [
|
|
+ "haiku/video_capture_haiku.cc",
|
|
+ "haiku/video_capture_haiku.h",
|
|
+ "haiku/device_info_haiku.cc",
|
|
+ "haiku/device_info_haiku.h",
|
|
+ ]
|
|
+
|
|
+ libs = [
|
|
+ "be",
|
|
+ "media",
|
|
+ "mediahelpers",
|
|
+ ]
|
|
+ }
|
|
|
|
if (!build_with_mozilla && is_android) {
|
|
include_dirs = [
|
|
diff --git a/third_party/libwebrtc/modules/video_capture/haiku/device_info_haiku.cc b/third_party/libwebrtc/modules/video_capture/haiku/device_info_haiku.cc
|
|
new file mode 100644
|
|
index 0000000..a9f55e1
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/video_capture/haiku/device_info_haiku.cc
|
|
@@ -0,0 +1,157 @@
|
|
+/*
|
|
+ * Copyright 2021-2025 Gerasim Troeglazov
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#include "modules/video_capture/haiku/device_info_haiku.h"
|
|
+
|
|
+#include <errno.h>
|
|
+#include <fcntl.h>
|
|
+#include <stdio.h>
|
|
+#include <stdlib.h>
|
|
+#include <string.h>
|
|
+#include <sys/ioctl.h>
|
|
+#include <unistd.h>
|
|
+
|
|
+#include <vector>
|
|
+
|
|
+#include "modules/video_capture/video_capture.h"
|
|
+#include "modules/video_capture/video_capture_defines.h"
|
|
+#include "modules/video_capture/video_capture_impl.h"
|
|
+#include "rtc_base/logging.h"
|
|
+
|
|
+#define MAX_DORMANT_NODES 32
|
|
+
|
|
+namespace webrtc {
|
|
+namespace videocapturemodule {
|
|
+VideoCaptureModule::DeviceInfo* VideoCaptureImpl::CreateDeviceInfo() {
|
|
+ return new videocapturemodule::DeviceInfoHaiku();
|
|
+}
|
|
+
|
|
+DeviceInfoHaiku::DeviceInfoHaiku() : DeviceInfoImpl() {}
|
|
+
|
|
+int32_t DeviceInfoHaiku::Init() {
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+DeviceInfoHaiku::~DeviceInfoHaiku() {}
|
|
+
|
|
+uint32_t DeviceInfoHaiku::NumberOfDevices() {
|
|
+ status_t err = B_OK;
|
|
+
|
|
+ int32_t countDevices = 0;
|
|
+
|
|
+ dormant_node_info dni[MAX_DORMANT_NODES];
|
|
+ int32 ioCount = MAX_DORMANT_NODES;
|
|
+ media_format out;
|
|
+ out.type = B_MEDIA_RAW_VIDEO;
|
|
+ err = BMediaRoster::Roster()->GetDormantNodes(dni, &ioCount, 0, &out, 0, B_BUFFER_PRODUCER);
|
|
+ if (err < B_OK)
|
|
+ return countDevices;
|
|
+
|
|
+ for (int ix = 0; ix < ioCount; ix++) {
|
|
+ media_node_id running = -1;
|
|
+ if ((B_OK == BMediaRoster::CurrentRoster()->GetInstancesFor(
|
|
+ dni[ix].addon, dni[ix].flavor_id, &running)) && (running > -1)) {
|
|
+ media_node node;
|
|
+ BMediaRoster::CurrentRoster()->GetNodeFor(running, &node);
|
|
+ int32 count = 1;
|
|
+ media_output videoOutput;
|
|
+ BMediaRoster::CurrentRoster()->GetAllOutputsFor(node, &videoOutput, 1, &count);
|
|
+ if (count > 0)
|
|
+ countDevices++;
|
|
+ BMediaRoster::CurrentRoster()->ReleaseNode(node);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return countDevices;
|
|
+}
|
|
+
|
|
+int32_t DeviceInfoHaiku::GetDeviceName(uint32_t deviceNumber,
|
|
+ char* deviceNameUTF8,
|
|
+ uint32_t deviceNameLength,
|
|
+ char* deviceUniqueIdUTF8,
|
|
+ uint32_t deviceUniqueIdUTF8Length,
|
|
+ char* productUniqueIdUTF8,
|
|
+ uint32_t productUniqueIdUTF8Length,
|
|
+ pid_t* pid,
|
|
+ bool* deviceIsPlaceholder) {
|
|
+ if (deviceNumber >= NumberOfDevices())
|
|
+ return -1;
|
|
+
|
|
+ status_t err = B_OK;
|
|
+
|
|
+ int32_t countDevices = 0;
|
|
+
|
|
+ media_output videoOutput;
|
|
+
|
|
+ dormant_node_info dni[MAX_DORMANT_NODES];
|
|
+ int32 ioCount = MAX_DORMANT_NODES;
|
|
+ media_format out;
|
|
+ out.type = B_MEDIA_RAW_VIDEO;
|
|
+ err = BMediaRoster::Roster()->GetDormantNodes(dni, &ioCount, 0, &out, 0, B_BUFFER_PRODUCER);
|
|
+ if (err < B_OK)
|
|
+ return countDevices;
|
|
+
|
|
+ err = B_ERROR;
|
|
+
|
|
+ for (int ix = 0; ix < ioCount; ix++) {
|
|
+ media_node_id running = -1;
|
|
+ if ((B_OK == BMediaRoster::CurrentRoster()->GetInstancesFor(
|
|
+ dni[ix].addon, dni[ix].flavor_id, &running)) && (running > -1)) {
|
|
+ media_node node;
|
|
+ BMediaRoster::CurrentRoster()->GetNodeFor(running, &node);
|
|
+ int32 count = 1;
|
|
+ BMediaRoster::CurrentRoster()->GetAllOutputsFor(node, &videoOutput, 1, &count);
|
|
+ BMediaRoster::CurrentRoster()->ReleaseNode(node);
|
|
+ if (count > 0) {
|
|
+ if (countDevices == deviceNumber) {
|
|
+ if (deviceNameLength > strlen(videoOutput.name)) {
|
|
+ strncpy(deviceNameUTF8, videoOutput.name, deviceNameLength);
|
|
+ strncpy(deviceUniqueIdUTF8, videoOutput.name, deviceUniqueIdUTF8Length);
|
|
+ err = B_OK;
|
|
+ } else
|
|
+ err = B_ERROR;
|
|
+ break;
|
|
+ }
|
|
+ countDevices++;
|
|
+ }
|
|
+ BMediaRoster::CurrentRoster()->ReleaseNode(node);
|
|
+ }
|
|
+ }
|
|
+ return err == B_OK ? 0 : -1;
|
|
+}
|
|
+
|
|
+int32_t DeviceInfoHaiku::CreateCapabilityMap(const char* deviceUniqueIdUTF8) {
|
|
+ _captureCapabilities.clear();
|
|
+
|
|
+ unsigned int size[][2] = {{352, 288}, {640, 480}, {1280, 720}, {1920, 1080}, {0, 0}};
|
|
+
|
|
+ for (int i = 0; size[i][0] != 0; i++) {
|
|
+ VideoCaptureCapability cap;
|
|
+ cap.width = size[i][0];
|
|
+ cap.height = size[i][1];
|
|
+ cap.maxFPS = 30;
|
|
+ cap.videoType = VideoType::kARGB;
|
|
+ _captureCapabilities.push_back(cap);
|
|
+ }
|
|
+
|
|
+ return _captureCapabilities.size();
|
|
+}
|
|
+
|
|
+int32_t DeviceInfoHaiku::DisplayCaptureSettingsDialogBox(
|
|
+ const char* deviceUniqueIdUTF8,
|
|
+ const char* dialogTitleUTF8,
|
|
+ void* parentWindow,
|
|
+ uint32_t positionX,
|
|
+ uint32_t positionY) {
|
|
+ return -1;
|
|
+}
|
|
+
|
|
+} // namespace videocapturemodule
|
|
+} // namespace webrtc
|
|
diff --git a/third_party/libwebrtc/modules/video_capture/haiku/device_info_haiku.h b/third_party/libwebrtc/modules/video_capture/haiku/device_info_haiku.h
|
|
new file mode 100644
|
|
index 0000000..cdf5adb
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/video_capture/haiku/device_info_haiku.h
|
|
@@ -0,0 +1,63 @@
|
|
+/*
|
|
+ * Copyright 2021-2025 Gerasim Troeglazov
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#ifndef MODULES_VIDEO_CAPTURE_MAIN_SOURCE_HAIKU_DEVICE_INFO_HAIKU_H_
|
|
+#define MODULES_VIDEO_CAPTURE_MAIN_SOURCE_HAIKU_DEVICE_INFO_HAIKU_H_
|
|
+
|
|
+#include <stdint.h>
|
|
+
|
|
+#pragma GCC visibility push(default)
|
|
+#include <kernel/OS.h>
|
|
+#include <app/Roster.h>
|
|
+#include <support/String.h>
|
|
+#include <app/Application.h>
|
|
+#include <app/Messenger.h>
|
|
+#include <media/MediaAddOn.h>
|
|
+#include <media/MediaDefs.h>
|
|
+#include <media/MediaFile.h>
|
|
+#include <media/MediaNode.h>
|
|
+#include <media/MediaRecorder.h>
|
|
+#include <media/MediaRoster.h>
|
|
+#include <media/MediaTrack.h>
|
|
+#include <media/TimeSource.h>
|
|
+#include <storage/NodeInfo.h>
|
|
+#pragma GCC visibility pop
|
|
+
|
|
+#include "modules/video_capture/device_info_impl.h"
|
|
+#include "rtc_base/logging.h"
|
|
+
|
|
+namespace webrtc {
|
|
+namespace videocapturemodule {
|
|
+
|
|
+class DeviceInfoHaiku : public DeviceInfoImpl {
|
|
+ public:
|
|
+ DeviceInfoHaiku();
|
|
+ ~DeviceInfoHaiku() override;
|
|
+ uint32_t NumberOfDevices() override;
|
|
+ int32_t GetDeviceName(uint32_t deviceNumber,
|
|
+ char* deviceNameUTF8,
|
|
+ uint32_t deviceNameLength,
|
|
+ char* deviceUniqueIdUTF8,
|
|
+ uint32_t deviceUniqueIdUTF8Length,
|
|
+ char* productUniqueIdUTF8 = 0,
|
|
+ uint32_t productUniqueIdUTF8Length = 0,
|
|
+ pid_t* pid = 0,
|
|
+ bool* deviceIsPlaceholder = 0) override;
|
|
+ int32_t CreateCapabilityMap(const char* deviceUniqueIdUTF8) override;
|
|
+ int32_t DisplayCaptureSettingsDialogBox(const char*,
|
|
+ const char*,
|
|
+ void*,
|
|
+ uint32_t,
|
|
+ uint32_t) override;
|
|
+ int32_t Init() override;
|
|
+};
|
|
+} // namespace videocapturemodule
|
|
+} // namespace webrtc
|
|
+#endif // MODULES_VIDEO_CAPTURE_MAIN_SOURCE_HAIKU_DEVICE_INFO_HAIKU_H_
|
|
diff --git a/third_party/libwebrtc/modules/video_capture/haiku/video_capture_haiku.cc b/third_party/libwebrtc/modules/video_capture/haiku/video_capture_haiku.cc
|
|
new file mode 100644
|
|
index 0000000..121c925
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/video_capture/haiku/video_capture_haiku.cc
|
|
@@ -0,0 +1,214 @@
|
|
+/*
|
|
+ * Copyright 2021-2025 Gerasim Troeglazov
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#include "modules/video_capture/haiku/video_capture_haiku.h"
|
|
+
|
|
+#include <errno.h>
|
|
+#include <fcntl.h>
|
|
+#include <stdio.h>
|
|
+#include <string.h>
|
|
+#include <sys/ioctl.h>
|
|
+#include <sys/mman.h>
|
|
+#include <sys/select.h>
|
|
+#include <time.h>
|
|
+#include <unistd.h>
|
|
+
|
|
+#include <new>
|
|
+#include <string>
|
|
+
|
|
+#include "api/scoped_refptr.h"
|
|
+#include "media/base/video_common.h"
|
|
+#include "modules/video_capture/video_capture.h"
|
|
+#include "rtc_base/logging.h"
|
|
+#include "rtc_base/ref_counted_object.h"
|
|
+
|
|
+namespace webrtc {
|
|
+namespace videocapturemodule {
|
|
+scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create(
|
|
+ Clock* clock,
|
|
+ const char* deviceUniqueId) {
|
|
+
|
|
+ auto implementation = make_ref_counted<VideoCaptureModuleHaiku>(clock);
|
|
+
|
|
+ if (implementation->Init(deviceUniqueId) != 0)
|
|
+ return nullptr;
|
|
+
|
|
+ return implementation;
|
|
+}
|
|
+
|
|
+VideoCaptureModuleHaiku::VideoCaptureModuleHaiku(Clock* clock)
|
|
+ : VideoCaptureImpl(clock),
|
|
+ _currentWidth(-1),
|
|
+ _currentHeight(-1),
|
|
+ _currentFrameRate(-1),
|
|
+ _captureStarted(false),
|
|
+ _captureVideoType(VideoType::kARGB) {}
|
|
+
|
|
+int32_t VideoCaptureModuleHaiku::Init(const char* deviceUniqueIdUTF8) {
|
|
+ int len = strlen((const char*)deviceUniqueIdUTF8);
|
|
+ _deviceUniqueId = new (std::nothrow) char[len + 1];
|
|
+ if (_deviceUniqueId) {
|
|
+ memcpy(_deviceUniqueId, deviceUniqueIdUTF8, len + 1);
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+VideoCaptureModuleHaiku::~VideoCaptureModuleHaiku() {
|
|
+ StopCapture();
|
|
+}
|
|
+
|
|
+
|
|
+void MyFrameCallback(BBitmap* frame, void* userData) {
|
|
+ webrtc::videocapturemodule::VideoCaptureImpl *fVideoCapture = (webrtc::videocapturemodule::VideoCaptureImpl*)userData;
|
|
+
|
|
+ webrtc::VideoCaptureCapability frameInfo;
|
|
+ frameInfo.width = frame->Bounds().Width() + 1;
|
|
+ frameInfo.height = frame->Bounds().Height() + 1;
|
|
+ frameInfo.videoType = webrtc::VideoType::kARGB;
|
|
+
|
|
+ fVideoCapture->IncomingFrame((unsigned char*)frame->Bits(), frame->BitsLength(), frameInfo);
|
|
+}
|
|
+
|
|
+int32_t VideoCaptureModuleHaiku::StartCapture(
|
|
+ const VideoCaptureCapability& capability) {
|
|
+ if (_captureStarted) {
|
|
+ if (capability.width == _currentWidth &&
|
|
+ capability.height == _currentHeight &&
|
|
+ _captureVideoType == capability.videoType) {
|
|
+ return 0;
|
|
+ } else {
|
|
+ StopCapture();
|
|
+ }
|
|
+ }
|
|
+
|
|
+ _currentWidth = capability.width;
|
|
+ _currentHeight = capability.height;
|
|
+ _currentFrameRate = 30;
|
|
+
|
|
+ status_t fStatus;
|
|
+ fMediaRoster = BMediaRoster::Roster(&fStatus);
|
|
+ if (fStatus != B_OK)
|
|
+ return -1;
|
|
+
|
|
+ media_node fTimeSource;
|
|
+ fStatus = fMediaRoster->GetTimeSource(&fTimeSource);
|
|
+ if (fStatus != B_OK)
|
|
+ return -1;
|
|
+
|
|
+ fVideoConsumer = new VideoConsumer("Iceweasel", NULL, 0);
|
|
+ fVideoConsumer->SetFrameCallback(MyFrameCallback, (void*)this);
|
|
+
|
|
+ dormant_node_info dni[30];
|
|
+ int32 ioCount = 30;
|
|
+ media_format out;
|
|
+ out.type = B_MEDIA_RAW_VIDEO;
|
|
+ fStatus = BMediaRoster::Roster()->GetDormantNodes(dni, &ioCount, 0, &out, 0, B_BUFFER_PRODUCER);
|
|
+ if (fStatus < B_OK)
|
|
+ return -1;
|
|
+
|
|
+ fStatus = B_ERROR;
|
|
+ for (int ix=0; ix<ioCount; ix++) {
|
|
+ media_node_id running = -1;
|
|
+ if ((B_OK == BMediaRoster::CurrentRoster()->GetInstancesFor(
|
|
+ dni[ix].addon, dni[ix].flavor_id, &running)) && (running > -1)) {
|
|
+ BMediaRoster::CurrentRoster()->GetNodeFor(running, &fProducerNode);
|
|
+ int32 count = 1;
|
|
+ BMediaRoster::CurrentRoster()->GetFreeOutputsFor(
|
|
+ fProducerNode, &videoOutput, 1, &count, B_MEDIA_RAW_VIDEO);
|
|
+ if (count > 0) {
|
|
+ if (strcmp(videoOutput.name, _deviceUniqueId) == 0) {
|
|
+ fStatus = B_OK;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ BMediaRoster::CurrentRoster()->ReleaseNode(fProducerNode);
|
|
+ }
|
|
+ }
|
|
+ if (fStatus != B_OK)
|
|
+ return -1;
|
|
+
|
|
+ fStatus = fMediaRoster->RegisterNode(fVideoConsumer);
|
|
+ if (fStatus != B_OK)
|
|
+ return -1;
|
|
+ fConsumerNode = fVideoConsumer->Node();
|
|
+
|
|
+ int32 count = 1;
|
|
+ fStatus = fMediaRoster->GetFreeInputsFor(fConsumerNode, &videoInput, 1, &count, B_MEDIA_RAW_VIDEO);
|
|
+ if (fStatus != B_OK || count < 1)
|
|
+ return -1;
|
|
+
|
|
+ // connect the nodes
|
|
+ media_format format;
|
|
+ format.type = B_MEDIA_RAW_VIDEO;
|
|
+ media_raw_video_format videoFormat = {
|
|
+ 30.0f, 1, 0,
|
|
+ (uint32)(_currentWidth - 1),
|
|
+ B_VIDEO_TOP_LEFT_RIGHT, 1, 1,
|
|
+ {
|
|
+ B_RGB32,
|
|
+ (uint32)(_currentWidth),
|
|
+ (uint32)(_currentHeight),
|
|
+ 0, 0, 0
|
|
+ }
|
|
+ };
|
|
+ format.u.raw_video = videoFormat;
|
|
+
|
|
+ fStatus = fMediaRoster->Connect(videoOutput.source, videoInput.destination,
|
|
+ &format, &videoOutput, &videoInput);
|
|
+
|
|
+ if (fStatus != B_OK)
|
|
+ return -1;
|
|
+
|
|
+ timeSource = fMediaRoster->MakeTimeSourceFor(fTimeSource);
|
|
+ bigtime_t real = BTimeSource::RealTime();
|
|
+ bigtime_t perf = timeSource->PerformanceTimeFor(real) + 3000000;
|
|
+
|
|
+ fStatus = fMediaRoster->StartNode(fConsumerNode, perf);
|
|
+ if (fStatus != B_OK)
|
|
+ return -1;
|
|
+
|
|
+ fStatus = fMediaRoster->StopNode(fProducerNode, perf, true);
|
|
+ fStatus = fMediaRoster->StartNode(fProducerNode, perf);
|
|
+ if (fStatus != B_OK)
|
|
+ return -1;
|
|
+
|
|
+ _captureStarted = true;
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+int32_t VideoCaptureModuleHaiku::StopCapture() {
|
|
+ if (_captureStarted) {
|
|
+ fMediaRoster->StopNode(fProducerNode, BTimeSource::RealTime(), true);
|
|
+ fMediaRoster->Disconnect(fProducerNode.node, videoOutput.source,
|
|
+ fConsumerNode.node, videoInput.destination);
|
|
+ fMediaRoster->UnregisterNode(fVideoConsumer);
|
|
+ delete fVideoConsumer;
|
|
+ _captureStarted = false;
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+bool VideoCaptureModuleHaiku::CaptureStarted() {
|
|
+ return _captureStarted;
|
|
+}
|
|
+
|
|
+int32_t VideoCaptureModuleHaiku::CaptureSettings(
|
|
+ VideoCaptureCapability& settings) {
|
|
+ settings.width = _currentWidth;
|
|
+ settings.height = _currentHeight;
|
|
+ settings.maxFPS = _currentFrameRate;
|
|
+ settings.videoType = _captureVideoType;
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+} // namespace videocapturemodule
|
|
+} // namespace webrtc
|
|
diff --git a/third_party/libwebrtc/modules/video_capture/haiku/video_capture_haiku.h b/third_party/libwebrtc/modules/video_capture/haiku/video_capture_haiku.h
|
|
new file mode 100644
|
|
index 0000000..5a1cef6
|
|
--- /dev/null
|
|
+++ b/third_party/libwebrtc/modules/video_capture/haiku/video_capture_haiku.h
|
|
@@ -0,0 +1,74 @@
|
|
+/*
|
|
+ * Copyright 2021-2025 Gerasim Troeglazov
|
|
+ *
|
|
+ * Use of this source code is governed by a BSD-style license
|
|
+ * that can be found in the LICENSE file in the root of the source
|
|
+ * tree. An additional intellectual property rights grant can be found
|
|
+ * in the file PATENTS. All contributing project authors may
|
|
+ * be found in the AUTHORS file in the root of the source tree.
|
|
+ */
|
|
+
|
|
+#ifndef MODULES_VIDEO_CAPTURE_MAIN_SOURCE_HAIKU_VIDEO_CAPTURE_HAIKU_H_
|
|
+#define MODULES_VIDEO_CAPTURE_MAIN_SOURCE_HAIKU_VIDEO_CAPTURE_HAIKU_H_
|
|
+
|
|
+#include <stddef.h>
|
|
+#include <stdint.h>
|
|
+
|
|
+#include <memory>
|
|
+
|
|
+#pragma GCC visibility push(default)
|
|
+#include <kernel/OS.h>
|
|
+#include <support/String.h>
|
|
+#include <app/Roster.h>
|
|
+#include <app/Application.h>
|
|
+#include <media/MediaAddOn.h>
|
|
+#include <media/MediaDefs.h>
|
|
+#include <media/MediaFile.h>
|
|
+#include <media/MediaNode.h>
|
|
+#include <media/MediaRecorder.h>
|
|
+#include <media/MediaRoster.h>
|
|
+#include <media/MediaTrack.h>
|
|
+#include <media/TimeSource.h>
|
|
+#include <storage/NodeInfo.h>
|
|
+
|
|
+#include <VideoConsumer.h>
|
|
+
|
|
+#pragma GCC visibility pop
|
|
+
|
|
+#include "modules/video_capture/video_capture_defines.h"
|
|
+#include "modules/video_capture/video_capture_impl.h"
|
|
+#include "rtc_base/platform_thread.h"
|
|
+#include "rtc_base/synchronization/mutex.h"
|
|
+#include "system_wrappers/include/clock.h"
|
|
+
|
|
+namespace webrtc {
|
|
+namespace videocapturemodule {
|
|
+class VideoCaptureModuleHaiku : public VideoCaptureImpl {
|
|
+ public:
|
|
+ VideoCaptureModuleHaiku(Clock* clock);
|
|
+ ~VideoCaptureModuleHaiku() override;
|
|
+ int32_t Init(const char* deviceUniqueId);
|
|
+ int32_t StartCapture(const VideoCaptureCapability& capability) override;
|
|
+ int32_t StopCapture() override;
|
|
+ bool CaptureStarted() override;
|
|
+ int32_t CaptureSettings(VideoCaptureCapability& settings) override;
|
|
+
|
|
+ private:
|
|
+ BMediaRoster *fMediaRoster;
|
|
+ VideoConsumer *fVideoConsumer;
|
|
+ BTimeSource* timeSource;
|
|
+ media_node fProducerNode;
|
|
+ media_node fConsumerNode;
|
|
+ media_input videoInput;
|
|
+ media_output videoOutput;
|
|
+
|
|
+ int32_t _currentWidth;
|
|
+ int32_t _currentHeight;
|
|
+ int32_t _currentFrameRate;
|
|
+ bool _captureStarted;
|
|
+ VideoType _captureVideoType;
|
|
+};
|
|
+} // namespace videocapturemodule
|
|
+} // namespace webrtc
|
|
+
|
|
+#endif // MODULES_VIDEO_CAPTURE_MAIN_SOURCE_HAIKU_VIDEO_CAPTURE_HAIKU_H_
|
|
diff --git a/third_party/libwebrtc/modules/video_capture/video_capture_factory.cc b/third_party/libwebrtc/modules/video_capture/video_capture_factory.cc
|
|
index 98e5e5e..36392e6 100644
|
|
--- a/third_party/libwebrtc/modules/video_capture/video_capture_factory.cc
|
|
+++ b/third_party/libwebrtc/modules/video_capture/video_capture_factory.cc
|
|
@@ -28,7 +28,7 @@ scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create(
|
|
[[maybe_unused]] const char* deviceUniqueIdUTF8) {
|
|
// This is only implemented on pure Linux and WEBRTC_LINUX is defined for
|
|
// Android as well
|
|
-#if (!defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)) || defined(WEBRTC_ANDROID)
|
|
+#if (!defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) && !defined(WEBRTC_HAIKU)) || defined(WEBRTC_ANDROID)
|
|
return nullptr;
|
|
#else
|
|
return videocapturemodule::VideoCaptureImpl::Create(
|
|
@@ -44,7 +44,7 @@ VideoCaptureModule::DeviceInfo* VideoCaptureFactory::CreateDeviceInfo(
|
|
[[maybe_unused]] VideoCaptureOptions* options) {
|
|
// This is only implemented on pure Linux and WEBRTC_LINUX is defined for
|
|
// Android as well
|
|
-#if (!defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)) || defined(WEBRTC_ANDROID)
|
|
+#if (!defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) && !defined(WEBRTC_HAIKU)) || defined(WEBRTC_ANDROID)
|
|
return nullptr;
|
|
#else
|
|
return videocapturemodule::VideoCaptureImpl::CreateDeviceInfo(options);
|
|
diff --git a/third_party/libwebrtc/rtc_base/BUILD.gn b/third_party/libwebrtc/rtc_base/BUILD.gn
|
|
index b2a85d2..7390f69 100644
|
|
--- a/third_party/libwebrtc/rtc_base/BUILD.gn
|
|
+++ b/third_party/libwebrtc/rtc_base/BUILD.gn
|
|
@@ -1184,6 +1184,10 @@ rtc_library("ifaddrs_converter") {
|
|
"ifaddrs_converter.h",
|
|
]
|
|
}
|
|
+
|
|
+ if (is_haiku) {
|
|
+ defines = [ "_BSD_SOURCE" ]
|
|
+ }
|
|
}
|
|
|
|
rtc_library("rolling_accumulator") {
|
|
diff --git a/third_party/libwebrtc/rtc_base/logging.cc b/third_party/libwebrtc/rtc_base/logging.cc
|
|
index c3a1f94..e450e83 100644
|
|
--- a/third_party/libwebrtc/rtc_base/logging.cc
|
|
+++ b/third_party/libwebrtc/rtc_base/logging.cc
|
|
@@ -114,7 +114,11 @@ std::string LogLineRef::DefaultLogLine() const {
|
|
log_output << timestamp;
|
|
}
|
|
if (thread_id_.has_value()) {
|
|
+#ifdef WEBRTC_HAIKU
|
|
+ log_output << "[" << (uint64_t)(*thread_id_) << "] ";
|
|
+#else
|
|
log_output << "[" << *thread_id_ << "] ";
|
|
+#endif
|
|
}
|
|
if (!filename_.empty()) {
|
|
#if defined(WEBRTC_ANDROID)
|
|
diff --git a/third_party/libwebrtc/rtc_base/physical_socket_server.cc b/third_party/libwebrtc/rtc_base/physical_socket_server.cc
|
|
index 069504d..64faa06 100644
|
|
--- a/third_party/libwebrtc/rtc_base/physical_socket_server.cc
|
|
+++ b/third_party/libwebrtc/rtc_base/physical_socket_server.cc
|
|
@@ -78,7 +78,7 @@
|
|
typedef void* SockOptArg;
|
|
#endif // WEBRTC_POSIX
|
|
|
|
-#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD)
|
|
+#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__HAIKU__)
|
|
#if defined(WEBRTC_LINUX)
|
|
#include <linux/sockios.h>
|
|
#endif
|
|
@@ -375,7 +375,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
|
|
ecn_ = value;
|
|
value = dscp_ + (ecn_ & kEcnMask);
|
|
}
|
|
-#if defined(WEBRTC_POSIX)
|
|
+#if defined(WEBRTC_POSIX) && !defined(__HAIKU__)
|
|
if (sopt == IPV6_TCLASS) {
|
|
// Set the IPv4 option in all cases to support dual-stack sockets.
|
|
// Don't bother checking the return code, as this is expected to fail if
|
|
@@ -519,7 +519,7 @@ int PhysicalSocket::DoReadFromSocket(void* buffer,
|
|
socklen_t addr_len = sizeof(addr_storage);
|
|
sockaddr* addr = reinterpret_cast<sockaddr*>(&addr_storage);
|
|
|
|
-#if defined(WEBRTC_POSIX)
|
|
+#if defined(WEBRTC_POSIX) && !defined(WEBRTC_HAIKU)
|
|
int received = 0;
|
|
iovec iov = {.iov_base = buffer, .iov_len = length};
|
|
msghdr msg = {.msg_iov = &iov, .msg_iovlen = 1};
|
|
@@ -704,7 +704,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
|
|
#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD)
|
|
RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
|
|
return -1;
|
|
-#elif defined(WEBRTC_POSIX)
|
|
+#elif defined(WEBRTC_POSIX) && !defined(__HAIKU__)
|
|
*slevel = IPPROTO_IP;
|
|
*sopt = IP_MTU_DISCOVER;
|
|
break;
|
|
@@ -722,7 +722,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
|
|
*sopt = TCP_NODELAY;
|
|
break;
|
|
case OPT_DSCP:
|
|
-#if defined(WEBRTC_POSIX)
|
|
+#if defined(WEBRTC_POSIX) && !defined(__HAIKU__)
|
|
if (family_ == AF_INET6) {
|
|
*slevel = IPPROTO_IPV6;
|
|
*sopt = IPV6_TCLASS;
|
|
@@ -736,7 +736,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
|
|
return -1;
|
|
#endif
|
|
case OPT_SEND_ECN:
|
|
-#if defined(WEBRTC_POSIX)
|
|
+#if defined(WEBRTC_POSIX) && !defined(__HAIKU__)
|
|
if (family_ == AF_INET6) {
|
|
*slevel = IPPROTO_IPV6;
|
|
*sopt = IPV6_TCLASS;
|
|
@@ -750,7 +750,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
|
|
return -1;
|
|
#endif
|
|
case OPT_RECV_ECN:
|
|
-#if defined(WEBRTC_POSIX)
|
|
+#if defined(WEBRTC_POSIX) && !defined(__HAIKU__)
|
|
if (family_ == AF_INET6) {
|
|
*slevel = IPPROTO_IPV6;
|
|
*sopt = IPV6_RECVTCLASS;
|
|
@@ -769,22 +769,30 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
|
|
*slevel = SOL_SOCKET;
|
|
*sopt = SO_KEEPALIVE;
|
|
break;
|
|
+#if !defined(WEBRTC_HAIKU)
|
|
case OPT_TCP_KEEPCNT:
|
|
*slevel = IPPROTO_TCP;
|
|
*sopt = TCP_KEEPCNT;
|
|
break;
|
|
+#endif
|
|
case OPT_TCP_KEEPIDLE:
|
|
*slevel = IPPROTO_TCP;
|
|
+#if defined(WEBRTC_HAIKU)
|
|
+ *sopt = SO_KEEPALIVE;
|
|
+#else
|
|
#if !defined(WEBRTC_MAC)
|
|
*sopt = TCP_KEEPIDLE;
|
|
#else
|
|
*sopt = TCP_KEEPALIVE;
|
|
+#endif
|
|
#endif
|
|
break;
|
|
+#if !defined(WEBRTC_HAIKU)
|
|
case OPT_TCP_KEEPINTVL:
|
|
*slevel = IPPROTO_TCP;
|
|
*sopt = TCP_KEEPINTVL;
|
|
break;
|
|
+#endif
|
|
case OPT_TCP_USER_TIMEOUT:
|
|
#if defined(WEBRTC_LINUX) || defined(WEBRTC_ANDROID)
|
|
*slevel = IPPROTO_TCP;
|
|
@@ -833,7 +841,7 @@ bool SocketDispatcher::Initialize() {
|
|
#if defined(WEBRTC_WIN)
|
|
u_long argp = 1;
|
|
ioctlsocket(s_, FIONBIO, &argp);
|
|
-#elif defined(WEBRTC_POSIX)
|
|
+#elif defined(WEBRTC_POSIX) && !defined(WEBRTC_HAIKU)
|
|
fcntl(s_, F_SETFL, fcntl(s_, F_GETFL, 0) | O_NONBLOCK);
|
|
int value = 1;
|
|
// Attempt to get receive packet timestamp from the socket.
|
|
diff --git a/third_party/libwebrtc/rtc_base/platform_thread_types.cc b/third_party/libwebrtc/rtc_base/platform_thread_types.cc
|
|
index 697beda..054989e 100644
|
|
--- a/third_party/libwebrtc/rtc_base/platform_thread_types.cc
|
|
+++ b/third_party/libwebrtc/rtc_base/platform_thread_types.cc
|
|
@@ -21,6 +21,10 @@
|
|
#endif
|
|
#endif
|
|
|
|
+#if defined(WEBRTC_HAIKU)
|
|
+#include <OS.h>
|
|
+#endif
|
|
+
|
|
#if defined(WEBRTC_WIN)
|
|
#include <iterator>
|
|
|
|
@@ -50,6 +54,8 @@ PlatformThreadId CurrentThreadId() {
|
|
return gettid();
|
|
#elif defined(WEBRTC_FUCHSIA)
|
|
return zx_thread_self();
|
|
+#elif defined(WEBRTC_HAIKU)
|
|
+ return find_thread(NULL);
|
|
#elif defined(WEBRTC_LINUX)
|
|
return syscall(__NR_gettid);
|
|
#elif defined(__EMSCRIPTEN__)
|
|
@@ -124,6 +130,8 @@ void SetCurrentThreadName(const char* name) {
|
|
prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name)); // NOLINT
|
|
#elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
|
|
pthread_setname_np(name);
|
|
+#elif defined(WEBRTC_HAIKU)
|
|
+ rename_thread(find_thread(NULL), name);
|
|
#elif defined(WEBRTC_FUCHSIA)
|
|
zx_status_t status = zx_object_set_property(zx_thread_self(), ZX_PROP_NAME,
|
|
name, strlen(name));
|
|
diff --git a/third_party/libwebrtc/webrtc.gni b/third_party/libwebrtc/webrtc.gni
|
|
index 0f8d25a..154356f 100644
|
|
--- a/third_party/libwebrtc/webrtc.gni
|
|
+++ b/third_party/libwebrtc/webrtc.gni
|
|
@@ -132,7 +132,7 @@ declare_args() {
|
|
rtc_build_tools = false
|
|
|
|
# Set this to false to skip building code that requires X11.
|
|
- rtc_use_x11 = ozone_platform_x11
|
|
+ rtc_use_x11 = ozone_platform_x11 && !is_haiku
|
|
|
|
# Set this to use PipeWire on the Wayland display server.
|
|
# By default it's only enabled on desktop Linux (excludes ChromeOS) and
|
|
@@ -349,7 +349,7 @@ rtc_opus_dir = "//third_party/opus"
|
|
|
|
# Desktop capturer is supported only on Windows, OSX and Linux.
|
|
rtc_desktop_capture_supported =
|
|
- (is_win && current_os != "winuwp") || is_mac || is_bsd ||
|
|
+ (is_win && current_os != "winuwp") || is_mac || is_bsd || is_haiku ||
|
|
((is_linux || is_chromeos) && (rtc_use_x11_extensions || rtc_use_pipewire))
|
|
|
|
###############################################################################
|
|
diff --git a/third_party/llama.cpp/src/llama-mmap.cpp b/third_party/llama.cpp/src/llama-mmap.cpp
|
|
index 519e81b..6389354 100644
|
|
--- a/third_party/llama.cpp/src/llama-mmap.cpp
|
|
+++ b/third_party/llama.cpp/src/llama-mmap.cpp
|
|
@@ -23,6 +23,10 @@
|
|
#endif
|
|
#endif
|
|
|
|
+#ifdef __HAIKU__
|
|
+#undef _POSIX_MEMLOCK_RANGE
|
|
+#endif
|
|
+
|
|
#if defined(_WIN32)
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#ifndef NOMINMAX
|
|
@@ -448,7 +452,7 @@ void * llama_mmap::addr() const { return pimpl->addr; }
|
|
|
|
void llama_mmap::unmap_fragment(size_t first, size_t last) { pimpl->unmap_fragment(first, last); }
|
|
|
|
-#if defined(_POSIX_MEMLOCK_RANGE) || defined(_WIN32)
|
|
+#if defined(_POSIX_MEMLOCK_RANGE) || defined(_WIN32) || defined(__HAIKU__)
|
|
const bool llama_mmap::SUPPORTED = true;
|
|
#else
|
|
const bool llama_mmap::SUPPORTED = false;
|
|
diff --git a/third_party/pipewire/pipewire/utils.h b/third_party/pipewire/pipewire/utils.h
|
|
index 528f676..8807d9c 100644
|
|
--- a/third_party/pipewire/pipewire/utils.h
|
|
+++ b/third_party/pipewire/pipewire/utils.h
|
|
@@ -12,7 +12,7 @@ extern "C" {
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <sys/un.h>
|
|
-#ifndef _POSIX_C_SOURCE
|
|
+#if !defined(_POSIX_C_SOURCE) && !defined(__HAIKU__)
|
|
# include <sys/mount.h>
|
|
#endif
|
|
#include <errno.h>
|
|
diff --git a/third_party/rust/glslopt/.cargo-checksum.json b/third_party/rust/glslopt/.cargo-checksum.json
|
|
index e3300c7..68175e2 100644
|
|
--- a/third_party/rust/glslopt/.cargo-checksum.json
|
|
+++ b/third_party/rust/glslopt/.cargo-checksum.json
|
|
@@ -1 +1 @@
|
|
-{"files":{".cargo_vcs_info.json":"7075d1c5c5e19288cefb431f16462eaa23229d02791120f4885ab1d20470cb7e",".gitmodules":"ffc0cce90e856d4f4bdb3bd3c950c9e59501a45ebd5022b91cfe8c07c79ef1ac","Cargo.lock":"f7970552595dc803ace9ef19b5f5d7b1fc784aac30cb27b2ebc3002d97122b9d","Cargo.toml":"7c53ee20d848f9913cacbfcb3ab2e89e30deee8d619d173c95130c7c5d065827","Cargo.toml.orig":"c46463ed28492baaaa17c772384cd1654093f96e900cefdb13d578e10561974f","README.md":"4468e08c64c19977707d792bfab0080e35ff927b64990eab77873f8ba056ba1c","build.rs":"92e29699487c21389fc823c50b410cfbfc74cc774265d24958489909ee48a076","glsl-optimizer/.editorconfig":"dca7ff05a95f608849c4dc640af7f83a0f415618e327a2ecb6a0afa0d9d2bacb","glsl-optimizer/.gitignore":"8ba554a4ca510ea7d9684475aa043edbeba7d15a5c9c4a04d8b1379a04ec6270","glsl-optimizer/CMakeLists.txt":"42ce94744e82ffa000da8b64d81fc140e293b9f5da7dd4cf6b49e7404a2448d9","glsl-optimizer/README.md":"b18eef11a92d267d88a937b1154f7670ee433c730b102fdf7e2da0b02722b146","glsl-optimizer/contrib/glslopt/Main.cpp":"14ba213210c62e234b8d9b0052105fed28eedd83d535ebe85acc10bda7322dd4","glsl-optimizer/contrib/glslopt/Readme":"65d2a6f1aa1dc61e903e090cdade027abad33e02e7c9c81e07dc80508acadec4","glsl-optimizer/generateParsers.sh":"878a97db5d3b69eb3b4c3a95780763b373cfcc0c02e0b28894f162dbbd1b8848","glsl-optimizer/include/GL/gl.h":"1989b51365b6d7d0c48ff6e8b181ef75e2cdf71bfb1626b1cc4362e2f54854a3","glsl-optimizer/include/GL/glext.h":"2ac3681045a35a2194a81a960cad395c04bef1c8a20ef46b799fb24af3ec5f70","glsl-optimizer/include/KHR/khrplatform.h":"1448141a0c054d7f46edfb63f4fe6c203acf9591974049481c32442fb03fd6ed","glsl-optimizer/include/c11/.editorconfig":"f96a2354e5f2b90367d643e6d9e980ce76278d4d47afd8b2713b595753aa8b4b","glsl-optimizer/include/c11/threads.h":"56e9e592b28df19f0db432125223cb3eb5c0c1f960c22db96a15692e14776337","glsl-optimizer/include/c11/threads_posix.h":"f8ad2b69fa472e332b50572c1b2dcc1c8a0fa783a1199aad245398d3df421b4b","glsl-optimizer/include/c11/threads_win32.h":"95bf19d7fc14d328a016889afd583e4c49c050a93bcfb114bd2e9130a4532488","glsl-optimizer/include/c11_compat.h":"103fedb48f658d36cb416c9c9e5ea4d70dff181aab551fcb1028107d098ffa3e","glsl-optimizer/include/c99_compat.h":"aafad02f1ea90a7857636913ea21617a0fcd6197256dcfc6dd97bb3410ba892e","glsl-optimizer/include/no_extern_c.h":"40069dbb6dd2843658d442f926e609c7799b9c296046a90b62b570774fd618f5","glsl-optimizer/license.txt":"e26a745226f4a46b3ca00ffbe8be18507362189a2863d04b4f563ba176a9a836","glsl-optimizer/src/compiler/builtin_type_macros.h":"5b4fc4d4da7b07f997b6eb569e37db79fa0735286575ef1fab08d419e76776ff","glsl-optimizer/src/compiler/glsl/README":"e7d408b621c1b605857c4cab63902f615edb06b530142b91ac040808df6e22f7","glsl-optimizer/src/compiler/glsl/TODO":"dd3b7a098e6f9c85ca8c99ce6dea49d65bb75d4cea243b917f29e4ad2c974603","glsl-optimizer/src/compiler/glsl/ast.h":"3e68ff374350c49211a9931f7f55a485d8d89fc4b21caaffbf6655009ad95bf8","glsl-optimizer/src/compiler/glsl/ast_array_index.cpp":"92b4d501f33e0544c00d14e4f8837753afd916c2b42e076ccc95c9e8fc37ba94","glsl-optimizer/src/compiler/glsl/ast_expr.cpp":"afd712a7b1beb2b633888f4a0911b0a8e4ae5eb5ab9c1e3f247d518cdaaa56d6","glsl-optimizer/src/compiler/glsl/ast_function.cpp":"74f4fbd490e366b37f4715168bb3465ecd9334d4130942f75dcc8e80e8e7f027","glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp":"d0f798eb09271d41d068b9e7b18220d37f1ed0083300ab51eba30989698fe23d","glsl-optimizer/src/compiler/glsl/ast_type.cpp":"8eb790b24b26dfb72bdc333744b566c26d8464c5d47d20eae659461f5c4899f7","glsl-optimizer/src/compiler/glsl/builtin_functions.cpp":"454189d643c220fcb49116ee5c8a34f7b349aa67564040deb8607f6a41a15e70","glsl-optimizer/src/compiler/glsl/builtin_functions.h":"a37cad7ed09b522c5b8bec7b80115a36846e7ba6e0874a2a858e32f7f202c665","glsl-optimizer/src/compiler/glsl/builtin_int64.h":"619def6f3aebf180da3944ef08f159ab12a58b24767e41d8b985ac37ded54d62","glsl-optimizer/src/compiler/glsl/builtin_types.cpp":"afec060b62d6f3b00bfbf94e9fa5f96341ce096c128d1eef322791e6ed9cea4d","glsl-optimizer/src/compiler/glsl/builtin_variables.cpp":"6563bfb1345cbca4c77e00eef09ad152f3e1dc271d246a08c5ce9e1f4ce4250a","glsl-optimizer/src/compiler/glsl/float64.glsl":"1072fd888be48c2a7a5117cd2d92a65f034965a66375f598bb856bff5d7be766","glsl-optimizer/src/compiler/glsl/generate_ir.cpp":"e5f0175370a0d07f93c48d3f0f1b8233d12c64a7b02de02dcc753ef7b398ef0f","glsl-optimizer/src/compiler/glsl/glcpp/README":"a0332a1b221d047e9cce5181a64d4ac4056046fd878360ec8ae3a7b1e062bcff","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c":"2d179879b1ffe84f58875eee5b0c19b6bae9c973b0c48e6bcd99978f2f501c80","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l":"e4c5744c837200dafd7c15a912d13f650308ea552454d4fa67271bc0a5bde118","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.c":"03494f9ce1cb82260506e2559e73a3eeb622c4bd51b65eaa0a2c3351862bd4c8","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.h":"264d9a18421cde255ce34a0a62b3d8e73465359f0d167e64aa3973062aae5bdd","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.y":"fafb66e3a8f149d19e085f18a4273ba6d4c11af9e9a01d665cc784dddf97b79f","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.c":"37ed294403c2abfd17fd999d1ae8d11b170e5e9c878979fefac74a31195c96b0","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.h":"85ac8b444bcbd0822b66448a1da407b6ae5467b649f5afaf5c58325bd7569468","glsl-optimizer/src/compiler/glsl/glcpp/pp.c":"a52d94f1bcb3fb2747a95709c4a77c25de7eea8354d2b83bb18efd96976a4473","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.c":"d11aeb3acfe966d1b78f1ee49804093f2434214c41391d139ffcb67b69dc9862","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.h":"abbf1f36ec5a92d035bfbb841b9452287d147616e56373cdbee1c0e55af46406","glsl-optimizer/src/compiler/glsl/glsl_lexer.cpp":"272b9fc1383d72b81bfc03fa11fdf82270ed91a294e523f9ce2b4554bd3effa9","glsl-optimizer/src/compiler/glsl/glsl_lexer.ll":"2b57d9f9eb830c3d7961d4533048a158ee6f458c8d05c65bea7b7cfbc36e4458","glsl-optimizer/src/compiler/glsl/glsl_optimizer.cpp":"f8095d20629d0af70be930b0612e169edb274551a1d25a3cd1bf9995a11ce2e8","glsl-optimizer/src/compiler/glsl/glsl_optimizer.h":"22e843b4ec53ba5f6cd85ca5f7bad33922dca8061b19fb512d46f1caca8d4757","glsl-optimizer/src/compiler/glsl/glsl_parser.cpp":"126baf368d525aba301854e3d91ba60b5aee32e1102376af71416f32cb95ec48","glsl-optimizer/src/compiler/glsl/glsl_parser.h":"2ea9a50716098a8f7bef782d2a030d757b68da73afb01b4d4940d3e8381d44e8","glsl-optimizer/src/compiler/glsl/glsl_parser.yy":"6b1fd1576b29fce005dff744a6dbd0219e4c695c361d61864e1f3a8d6fa6b764","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.cpp":"aad64b5b66467da650091430681e8c6a820cf3cadc4db3c160bf2f15875390ae","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.h":"71fd0e92bbdb193dfb067d7bfdb1200d77392be2fbd0cbfc9ca89d1bb4c7e741","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.cpp":"6660fb83c0ddddbbd64581d46ccfdb9c84bfaa99d13348c289e6442ab00df046","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.h":"24682b8304e0ea3f6318ddb8c859686bd1faee23cd0511d1760977ae975d41bf","glsl-optimizer/src/compiler/glsl/hir_field_selection.cpp":"72a039b0fcab4161788def9e4bedac7ac06a20d8e13146529c6d246bd5202afd","glsl-optimizer/src/compiler/glsl/int64.glsl":"303dbe95dde44b91aee3e38b115b92028400d6a92f9268975d607471984e13eb","glsl-optimizer/src/compiler/glsl/ir.cpp":"2b4741cce90b5d4abff5d719c7324e2693c67294d4d99736cb241554adb281bc","glsl-optimizer/src/compiler/glsl/ir.h":"990b1c74447c4eb4835353ccb0ed9aea644f97fc1129ef1739cd935075d85d2e","glsl-optimizer/src/compiler/glsl/ir_array_refcount.cpp":"8cdc1cffe01e42e0566fa2193a75f789628e8025ad1b82f0ee6f204451b7f9f7","glsl-optimizer/src/compiler/glsl/ir_array_refcount.h":"75f06ec81342b379096ca52e1dc0fd5f19a11ff8e9b58203c20628179d644c12","glsl-optimizer/src/compiler/glsl/ir_basic_block.cpp":"1e2920b1c0ecb08424c745c558f84d0d7e44b74585cf2cc2265dc4dfede3fa2f","glsl-optimizer/src/compiler/glsl/ir_basic_block.h":"81be7da0fc0ee547cd13ec60c1fcd7d3ce3d70d7e5e988f01a3b43a827acdf05","glsl-optimizer/src/compiler/glsl/ir_builder.cpp":"daba29c5a1efdd5a9754f420eb3e2ebdf73485273497f40d4863dadeddb23c0d","glsl-optimizer/src/compiler/glsl/ir_builder.h":"2822e74dd3f6e3df8b300af27d5b11ea2dd99d0e5e7ca809b7bbcce9833c483c","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp":"8c6df5abf2fe313363f285f171c19ca6c8ee4f3bc2ed79d33c0c88cc8be45c48","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.h":"799852adc3a0e54d04080655e7cebfa0d3bf5b6ffed5d8414f141380665d4db7","glsl-optimizer/src/compiler/glsl/ir_clone.cpp":"d897a4e1f5bbec4a6a2f15044c1be9a4d13899c73be77335b041049a4589aa5d","glsl-optimizer/src/compiler/glsl/ir_constant_expression.cpp":"78bd87ddb09db67f6c499067728d72aef4f16aa02721a99a4b769d1e0cfa9010","glsl-optimizer/src/compiler/glsl/ir_equals.cpp":"bca28533a6310b0fc152b56d80872368f1510dc62ed6e8ac199b9ffa7fac02e7","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.cpp":"7e918d4e1f237eca01396004015865ce345afe32a876c9dbc6728576a1a7eae4","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.h":"f45b66aa9497520e7e08e612d24b308477c34477fbd963ee9320eac664957f16","glsl-optimizer/src/compiler/glsl/ir_expression_operation.h":"cc9f10727dbd26cac506804f51456302c702650f9eeb59054a7e1575d5cf6687","glsl-optimizer/src/compiler/glsl/ir_expression_operation.py":"7b86c96021b9fbe165957f4ecb0b612fefcde1c2cf3c6d75e3cdb22e369216ba","glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h":"9ad3346416392e3efa11e12ecf2feca7453c5253d241eb96c91dfb85d4f2b971","glsl-optimizer/src/compiler/glsl/ir_expression_operation_strings.h":"a6826daf496a8b9e89885bc2a161ac3445d501b23c6e0ac33e2c01b506b273c8","glsl-optimizer/src/compiler/glsl/ir_function.cpp":"7537365fc0fbe4b37a26b9a2146cc64d3e9a774d60eab63b65002ad165ae8fc7","glsl-optimizer/src/compiler/glsl/ir_function_can_inline.cpp":"faddbf112187a048d502716a3fb82570a322299ba2a3abd79388382c82040bfc","glsl-optimizer/src/compiler/glsl/ir_function_detect_recursion.cpp":"9176973eaf5c0a984701f953bb7a80f37dca43d59b5bce50fc69b3f02f2902d7","glsl-optimizer/src/compiler/glsl/ir_function_inlining.h":"9739493f99c489987d650762fccdd3fb3d432f6481d67f6c799176685bd59632","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.cpp":"3725861fbe2b98e0617f52d3b14cf6d3b25fb5ec00f5ef5d308b03642f592767","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.h":"e0560210e966c0c31e4ca843e80ea154e64db5a444b8c2df845b6ba5b3a43fc1","glsl-optimizer/src/compiler/glsl/ir_hv_accept.cpp":"caf7ce2cd9494aadd3c58bcf77f29de58368dc9e347a362bbf37f8bda9509b80","glsl-optimizer/src/compiler/glsl/ir_optimization.h":"8b3dcfc7f9e96b21a8dd47a0040d90be483a9e67a2cdce3a697188fb758d4630","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp":"f8e34a983452be0dcb5a695e9c8e895eead24f9e540992a8afe510ae85da4c4c","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.h":"1ad1bd3efd1ace39051c13f904c05fd80425d329444f9a8d47fd6d948faf46e0","glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp":"643f5a68aae3fb37267fd793f1216d1cfdeb2c09338c26b1f30e4c6deaef4de5","glsl-optimizer/src/compiler/glsl/ir_print_visitor.h":"4573eb93268a2654c14b505253dd651e2695d43dc745904d824da18305269b95","glsl-optimizer/src/compiler/glsl/ir_reader.cpp":"06bfba802c8354e5a8b2334b6d78d6297de18235bedd3f8fbb382c89870b02f2","glsl-optimizer/src/compiler/glsl/ir_reader.h":"63e3f7f1597936a7011d5b520e171b197bf82bee6c1560d822c3edf5aaa6f9e9","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.cpp":"84b5c5d746555adca85759c2912fe48010232b7c1c0bd2cf03bd04067a85e66f","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.h":"fd8c561b71085d3211fff85ed514fecb299d8ce19a04bc063419a55b6d840525","glsl-optimizer/src/compiler/glsl/ir_set_program_inouts.cpp":"ab9f115ce9e7f312d9c7978340ced0dc4ae6d13a80e08442ba9709d11d50cae5","glsl-optimizer/src/compiler/glsl/ir_uniform.h":"683ae6896b1a08470c090be5f822fc31cd434eab9216e954b9bba24a46975109","glsl-optimizer/src/compiler/glsl/ir_unused_structs.cpp":"9c1620c45f2fc071fe5ed828472040b14c5f42effe06aa0e3b8352c95ef78786","glsl-optimizer/src/compiler/glsl/ir_unused_structs.h":"13387b49c23093575276b25b9dfd31fedd8f131c5c4f3128ab04cf03e15b5295","glsl-optimizer/src/compiler/glsl/ir_validate.cpp":"6b232be5999a86ea278f4f15b2832d76843246509118d924243055a3b9b0299f","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.cpp":"2764a3cad937d53f36db7447c3a5b98b04bf153acf81074d971857fc5bca460d","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.h":"b0668e3eb1501ef65e38fe12830742ecb3d28e6039f30e366c8924efc29b4a39","glsl-optimizer/src/compiler/glsl/ir_visitor.h":"f21b3534c3d66d5fb707d1581fece7e1eb043523afbaedf89918cfb031c6df94","glsl-optimizer/src/compiler/glsl/link_atomics.cpp":"360f0209e11f367ba358223597b0a118bae095bff16337cf03f1fb89c5b80ca6","glsl-optimizer/src/compiler/glsl/link_functions.cpp":"de7895da8aa33a1e3c2c1eb2fdaf267ab5d1fbfdb79ae2e67f95211e946e294c","glsl-optimizer/src/compiler/glsl/link_interface_blocks.cpp":"1926cfa73810704eb19b916c1b2cdb9321155e2f98b2a0a57c7c3c6e960540cd","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.cpp":"1e14e06ca3b2c1089cfba2e8eaf0c1f373d9d6374b6082f320962dd71ae09611","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.h":"fd58c155af645295bb6aec08797889de586f4d919731de2bce57e8dce59bb048","glsl-optimizer/src/compiler/glsl/link_uniform_blocks.cpp":"09589f49776dce32e6c4044937de7e0c839a9754ad31960148f8f9e010658997","glsl-optimizer/src/compiler/glsl/link_uniform_initializers.cpp":"bf98e08c12db466acf9623cbeb8fa8e3b4002512722e7a6521287f558a099f37","glsl-optimizer/src/compiler/glsl/link_uniforms.cpp":"84bad5b1377362cecf259b05124239be5220b03ce1c0c61b59bd9a47e4379af2","glsl-optimizer/src/compiler/glsl/link_varyings.cpp":"a5f1a53e7c80d635515fe808ff223d89fef1767abb0f2b7aa28fa6773dca353f","glsl-optimizer/src/compiler/glsl/link_varyings.h":"b9dbe018f038df69763df2e928742ce81bbc6e3aaba26f50621e30a6d9aa6220","glsl-optimizer/src/compiler/glsl/linker.cpp":"40b1ecd5d4f6c7f13d5a87ce390561a51fdf6f3fcd9b2197b9c88b03a773ba94","glsl-optimizer/src/compiler/glsl/linker.h":"ecf94b4ad75ef461c27c557fda4bd25f34c91930822b8e1d729ec84520d4a049","glsl-optimizer/src/compiler/glsl/linker_util.cpp":"1663ad88e2a369305659aeeffaedb5bd752cf76340a2ba5797fc0bf600633cf9","glsl-optimizer/src/compiler/glsl/linker_util.h":"6db788daf9c8e87ae2764b61a8b37ebe419e69c1b82ddee01986e37c978c6993","glsl-optimizer/src/compiler/glsl/list.h":"b1f46ce0e552fe7c45b2a19408a9d97662e23e4b182ab335491c26f8cf25886f","glsl-optimizer/src/compiler/glsl/loop_analysis.cpp":"57ecd573477c68091c7cc99537faa7139a8f395935e3d4f10144cefdefb5a611","glsl-optimizer/src/compiler/glsl/loop_analysis.h":"a85f045a038ee5b5176063e85d7988865862c44ab0580f771b993a042d0b69cc","glsl-optimizer/src/compiler/glsl/loop_unroll.cpp":"bd4292ea2809f5a669bcb76ceaa1ac365772dcd638c579c3ed10275214901a54","glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp":"8cfbef140d9c4b4d2f57bfa05c9c374d31a121d0f87afce94333f049023b654a","glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp":"1ae221c3c7a95aeb867207e7a742be635f91b406c157747bfd6ddf10274d97fb","glsl-optimizer/src/compiler/glsl/lower_buffer_access.h":"807886953a576a323591798cbca5e2df24295ea893b28affd8ffb5926cebaa04","glsl-optimizer/src/compiler/glsl/lower_builtins.cpp":"4d81afc32cf58e1481fcb5e42888ab93dbe6820310a20ff7a9982b77b2152d9b","glsl-optimizer/src/compiler/glsl/lower_const_arrays_to_uniforms.cpp":"608403f0eeeedf21cfcd3014116e0f44e28cbdf6c4c32aac7e613e64e30205e1","glsl-optimizer/src/compiler/glsl/lower_cs_derived.cpp":"179905cd47a294122adeb5b0abfed6f2f67782dcde21b544d1ee2c1985154e66","glsl-optimizer/src/compiler/glsl/lower_discard.cpp":"3b361b2db0004d544d64611cb50d5a6e364cf6c5f2e60c449085d7d753dd7fb0","glsl-optimizer/src/compiler/glsl/lower_discard_flow.cpp":"f5c29b6a27690bb5c91f196d1a1cf9f6be4f1025292311fe2dac561ce6774dee","glsl-optimizer/src/compiler/glsl/lower_distance.cpp":"a118c85493d5d22b2c059a930c51a5854896d4b1dade76598eaa985e5a3dff8c","glsl-optimizer/src/compiler/glsl/lower_if_to_cond_assign.cpp":"469e617757fd1728709cce021aac5c8da05ee503bf5366977bdc4ef7a6d83950","glsl-optimizer/src/compiler/glsl/lower_instructions.cpp":"6ff5c396abe40d8a2145d571e99e2bbe9143393e15aafc28adc2803a01d821b6","glsl-optimizer/src/compiler/glsl/lower_int64.cpp":"d1ed41196880dd53c7b13e2782f9423f8442bf1d46186e8be92b1b66218a83ee","glsl-optimizer/src/compiler/glsl/lower_jumps.cpp":"34de7b493f281589fb0c2c0f6e885d0a0fabbe7a4e97a73de374dd714777a58c","glsl-optimizer/src/compiler/glsl/lower_mat_op_to_vec.cpp":"dff7a308edc4846c348ed4225c6699a9c75abac68d88f41f85954276552779f4","glsl-optimizer/src/compiler/glsl/lower_named_interface_blocks.cpp":"16063ac127bff75a68272070ab11c21c25101edbff62b4c68f4983b4cd941af0","glsl-optimizer/src/compiler/glsl/lower_offset_array.cpp":"3b00773399135aea85746a5a68b96ef000bc6841be1a2c8e6f25c516628b0949","glsl-optimizer/src/compiler/glsl/lower_output_reads.cpp":"a0fc9975d5aa1617e21fc6c353659a9802da9e83779a3eef4ec584f74b4dadc5","glsl-optimizer/src/compiler/glsl/lower_packed_varyings.cpp":"7550099d4ae123d71541c2fc88bc04fbfe9271ec75d7e210987d1c8cac3cf3ea","glsl-optimizer/src/compiler/glsl/lower_packing_builtins.cpp":"79a13d161fe505a410ab948d92769395708693ec888153630fa240e5b97e356f","glsl-optimizer/src/compiler/glsl/lower_precision.cpp":"f82a185b879872b977a1787d8061b9a80bc4cf8db1b970db6efba2ad9cc20fa2","glsl-optimizer/src/compiler/glsl/lower_shared_reference.cpp":"ea2dccf50a83bc19391bf6b7ab6aa53c0005f427af4066d25140340af9a4beef","glsl-optimizer/src/compiler/glsl/lower_subroutine.cpp":"f69fa53650eeb6f2944fce4d36a6e0a423e6705f3a3bd3389c7fadb83cfc8802","glsl-optimizer/src/compiler/glsl/lower_tess_level.cpp":"b196c9d424c0569f3e85d75c2d125af21566cb113d69036db87c0990703e0fa7","glsl-optimizer/src/compiler/glsl/lower_texture_projection.cpp":"4d247f244272adc8250fd888d8d932a140dd5de4d1efc7a58492c3c2b8291527","glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp":"89bdbc6c1669230c644c0857db1ce2781ec61d349ecd08c7914146e1f4750a4a","glsl-optimizer/src/compiler/glsl/lower_variable_index_to_cond_assign.cpp":"fce930f29ac9405b297d1f749d68f59506b89c70b4ee1b1ab8cf49a34cc71ecf","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_cond_assign.cpp":"3c67d851a11a55fad1c49a550f3a0cfe50892d33a3f238ce266cd829eba510a8","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_swizzle.cpp":"f5ec666b73e1415cbab32519a53605ed385f3b03e889560373dbce69dda5000e","glsl-optimizer/src/compiler/glsl/lower_vector.cpp":"f7c13f5572ebe09b6a71553133b2cf003cd4b77b9657600672ee3b21bf890725","glsl-optimizer/src/compiler/glsl/lower_vector_derefs.cpp":"b05793da6dd620a531b43df5af8b2ecbc37b9db0c88910f5724ea10bcd057e19","glsl-optimizer/src/compiler/glsl/lower_vector_insert.cpp":"fee772ec17eea5e86a529bf9c5fa2ee0d29a5982bb75ebc6d68ed36cd19aa299","glsl-optimizer/src/compiler/glsl/lower_vertex_id.cpp":"690e8715182e03fead5cc5a35251fb4f41b357e4c71a1dfbc4bd7be19862b56d","glsl-optimizer/src/compiler/glsl/lower_xfb_varying.cpp":"58c0e8b270e4bbde54250be03cdb2f36966bcafb785372ad2e2b786835df7f9f","glsl-optimizer/src/compiler/glsl/main.cpp":"ae5e88abbbc8a12f769e1296bad938b9d7398cc6da0d3d0caeceeeb876536850","glsl-optimizer/src/compiler/glsl/opt_add_neg_to_sub.h":"f5054944bfd068810629080d0ea11df78b3f57a8f86df75e13ca50157ad1964d","glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp":"25f45b20e1972ee8c789177a1aeda6e4286c25db2eae3a43ff83029ae64969c0","glsl-optimizer/src/compiler/glsl/opt_array_splitting.cpp":"19d3ce0e815438f4df9ab2890e767b03a4f3f191b53bb30c0217cf2ae6a95430","glsl-optimizer/src/compiler/glsl/opt_conditional_discard.cpp":"0e44e0e126711a3725c1f3a2aa65ff03c381fed08680ffc30101aae60f716c4e","glsl-optimizer/src/compiler/glsl/opt_constant_folding.cpp":"a088d04d9b45f9e55e235835648f614c89b7803c03a6d4f6a6d1a6bc1f0228bd","glsl-optimizer/src/compiler/glsl/opt_constant_propagation.cpp":"8a9440d77ecd6dcf13e683cbb99943aab6311c8fd4b5f6a9189a8d4f270746f4","glsl-optimizer/src/compiler/glsl/opt_constant_variable.cpp":"63d3ccd4dd09f19c9cf1a2f51592111bed41284504f29f3c0de4cadebc439a37","glsl-optimizer/src/compiler/glsl/opt_copy_propagation_elements.cpp":"ffa0f50863995e0d2e31f55a52e82319edc71e520987bebd7f7e561ea331c64b","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_variables.cpp":"84e8747b948232f01dd56b428b9315f96f9511f605f240119fc446fae28981a9","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_varyings.cpp":"761523e88f5b3ba785170f4d7205e94fa99acb7e74d29efbe40e1c010e1dbdb3","glsl-optimizer/src/compiler/glsl/opt_dead_code.cpp":"fd1ba2da7337d4e5dad17f5c2d73d9cc8880305f423e85d64cf94553588fa401","glsl-optimizer/src/compiler/glsl/opt_dead_code_local.cpp":"969a598b4df322baf222258a66cd64a326ea20e5b3125be9d8d1771f522c69e0","glsl-optimizer/src/compiler/glsl/opt_dead_functions.cpp":"774cae6536d02edf26e996a2a895e1f62d5098f16dc96b44798b4fc731a9a95f","glsl-optimizer/src/compiler/glsl/opt_flatten_nested_if_blocks.cpp":"3696a5c55f02e20056e085bc2714f73ac992f221b6f3387d655068e86b512046","glsl-optimizer/src/compiler/glsl/opt_flip_matrices.cpp":"44f0fe05b49329667671f88c96dc86ab3fe1459ff7b87f2b2d88de2d49829f9f","glsl-optimizer/src/compiler/glsl/opt_function_inlining.cpp":"fb56a33c90419a01676b57cbd91d0674a54cca40e6defaacc88dd33facebc131","glsl-optimizer/src/compiler/glsl/opt_if_simplification.cpp":"ac406eb35e379c357641d6c5749f50c65961455924d3dc884e2b90046fa92c5c","glsl-optimizer/src/compiler/glsl/opt_minmax.cpp":"8abd59d3b14ef60ff14a9c69660e6945f5cf10b97edb4afebe56be3f81d96316","glsl-optimizer/src/compiler/glsl/opt_rebalance_tree.cpp":"8bb6329dc0f299042368fc81934c2df019b45ab9f7aa0415d4e57b8d1ff98c9f","glsl-optimizer/src/compiler/glsl/opt_redundant_jumps.cpp":"222c73e2ac7a938ebb6428cc6c780c908ff6156d8ff935b04fed93a48fc10496","glsl-optimizer/src/compiler/glsl/opt_structure_splitting.cpp":"2edc79cc13f3177934e0443ad62f5976a1991f01f86ea303a803434849b13a47","glsl-optimizer/src/compiler/glsl/opt_swizzle.cpp":"015d0abddfe507f67c4b96c82988d861d018ededf7bf055e2bcbe9ea92da694e","glsl-optimizer/src/compiler/glsl/opt_tree_grafting.cpp":"46d28ac983ea244a4315bdc0e8892979ec4d1f9b9a96ac8a8a08006d9bc5e878","glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp":"d80ee43bb97d9f016fb9c5e1e06f5b2afa569811f368ba067be794ec11d085fb","glsl-optimizer/src/compiler/glsl/program.h":"2982447e2abd35371e273ad87951722782a8b21c08294f67c39d987da1e1c55f","glsl-optimizer/src/compiler/glsl/propagate_invariance.cpp":"080943e21baa32494723a2eefb185915d2daae1f46d6df420145c5ad6857e119","glsl-optimizer/src/compiler/glsl/s_expression.cpp":"1ced972bc6ecc8eab4116ea71fb0212ab9ae5bcc0be3b47aa5d9d903566b3af1","glsl-optimizer/src/compiler/glsl/s_expression.h":"65b847e30e22a809b57d0bc70243049c99d9c6318803c5b8d0826aba55dc217e","glsl-optimizer/src/compiler/glsl/serialize.cpp":"be0eb4251348a9d921acb839a5c48c6023a2e9d116d602bb0432787ab623655d","glsl-optimizer/src/compiler/glsl/serialize.h":"57425732eba1233d928e5f07f88b623ce65af46b3bb034bf147f0a4b7f94f9a1","glsl-optimizer/src/compiler/glsl/shader_cache.cpp":"e0c5c433f2df3fccdf1d61281bfcb0ee5633433339b97c697d64db99611cbaaf","glsl-optimizer/src/compiler/glsl/shader_cache.h":"9217164d8d7f54aca0fe5922c7187095a6ae0cb703b196b79805aeef07a7e697","glsl-optimizer/src/compiler/glsl/standalone.cpp":"8e6c416a14d631261917a5fe4cc91880c287b22b2dfd70eb22028289a8fa5364","glsl-optimizer/src/compiler/glsl/standalone.h":"a7c397d1dfdd1e7fb2cfe99db35cd9df93251e642059208533202b7f20497f83","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.cpp":"970d14b7a9d58e5270321f97bf5d57795558b1c570a56678e04a65b26c60bf4f","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.h":"d921a617ea82b9e49413314492a645c44356de503581b1be3f1b57de236e480d","glsl-optimizer/src/compiler/glsl/string_to_uint_map.cpp":"d824bf5b839bd39498dc9e457103cdbe3e5289ddf7564107c27b1505948dd31f","glsl-optimizer/src/compiler/glsl/string_to_uint_map.h":"e2f18e66359c9d620e085de7f4a334a47df9c66e65a5bfe8b734c627bec04104","glsl-optimizer/src/compiler/glsl/test_optpass.h":"b27b8f35f5387e7ce4982bb51c7b63ccf14f91757f3108a5d02ed006925bb8a0","glsl-optimizer/src/compiler/glsl/xxd.py":"376484142f27f45090ea8203ae2621abf73f06175cb0ee8d96f44a3b9327f4bd","glsl-optimizer/src/compiler/glsl_types.cpp":"044bb6754f45419a3151e7a25c39202a82009ae3c6bc54ff7f0bb4258a5deefe","glsl-optimizer/src/compiler/glsl_types.h":"fd899a42f34ddeb8601bc3cd6c5e3aed82fc8aef4042dde1b39b3c01e1dcc219","glsl-optimizer/src/compiler/shader_enums.c":"436bff5216b11b0980bdfada5885fc6ac9afa2037a3027fcd6eea2a8635597ac","glsl-optimizer/src/compiler/shader_enums.h":"13220442a5c02e83540cf2c0ad4f8417b2fbda5f2586dec4e92082544c937cdd","glsl-optimizer/src/compiler/shader_info.h":"4c5453e81197ca83593ee4f365074b23530f2ab21c78e1733b63dec6f344c12a","glsl-optimizer/src/gallium/auxiliary/util/u_half.h":"3c2b37bda3ccb64387e44b723d29cf9046decab1a893bf42d842e9603398bdee","glsl-optimizer/src/gallium/include/pipe/p_compiler.h":"c75620096ce8523dae90599e50aa2ef6468d3b0e368a77795edeb20dd1abfc0c","glsl-optimizer/src/gallium/include/pipe/p_config.h":"a27692fc35f9e55df3224b7529e66b3001e911e94e6bc5f8f569e493e1ee3fb7","glsl-optimizer/src/gallium/include/pipe/p_defines.h":"be26d68c0acc67c5e44788c6299716a9eee415fd81d7d747e3738a829e3b6b38","glsl-optimizer/src/gallium/include/pipe/p_format.h":"5674215fc41d27496f037cf837717daefbf23ebb38d40ace7c0c414bc08182b0","glsl-optimizer/src/gallium/include/pipe/p_state.h":"d600593aba5f5a17072a6c38f6baa81e01c7994b0174250f7e433bb41684b702","glsl-optimizer/src/mapi/glapi/glapi.h":"73632a625c0ddabc401205e8b5a81eb8af8506868efe4b170d7979ec3619e9c5","glsl-optimizer/src/mesa/main/config.h":"5800259373099e5405de2eb52619f9de242552a479902a3a642a333c8cb3c1e7","glsl-optimizer/src/mesa/main/context.c":"2f3208473d99c94f734b1137ba91889d4a1babb9e7534bf1dc85d851ee98274e","glsl-optimizer/src/mesa/main/context.h":"cc7e4194797db9d007f01884e23d786c453b3860821f7f2ddcdf0f1bf3f8ffb1","glsl-optimizer/src/mesa/main/dd.h":"6a964acd06b6c2d88700e69fb75fe3c6b3b3d45bbc41db24f3f897a29695fe0c","glsl-optimizer/src/mesa/main/debug_output.h":"7312422e90b8c0e34028ac27280e438139b5cba525c99deb3ac883cd3d87e452","glsl-optimizer/src/mesa/main/draw.h":"7eaef3a9e27a60ea6f7937109bf3a6190b831162fde0479abb12077ce27c353d","glsl-optimizer/src/mesa/main/enums.h":"87d562a6764f51c014a2274fa7c3aca17c04441537ddd56b2554f13c6fffea92","glsl-optimizer/src/mesa/main/errors.h":"c79444b5df289c90fbb22a33b2d0c23917d9fc4510960088f0b79e53bb56b1b2","glsl-optimizer/src/mesa/main/extensions.h":"a38b2f87cc93c513994281350d69e06c84ff8eded5313ec0a1be33f375e0ebbd","glsl-optimizer/src/mesa/main/extensions_table.c":"17642d1a8c9a0bf2bd61060052d33ff14a005d2b962e6cf91465797a50851e85","glsl-optimizer/src/mesa/main/extensions_table.h":"2c879571c238d2e14461031ac740372fd0f9ac3a34c0d5541bb9b7ed4c0376c8","glsl-optimizer/src/mesa/main/formats.h":"02e2f7ec3e39286cf9f27e2641043e6df8ecb1dfde9e643313210e214af2a929","glsl-optimizer/src/mesa/main/glheader.h":"58217b33eead6aa6b23cd4a291cefeaa6cb84e465f4960daffca97c44d6d1c35","glsl-optimizer/src/mesa/main/glthread.h":"51fb2711f77e7eafcfc52d29d5b844978832b24c930d88accd48d143a6eb9c6f","glsl-optimizer/src/mesa/main/hash.h":"7e7f782034c16a8e693de48e00c31d4a90b0129f4029fd074033d7d16ccbe718","glsl-optimizer/src/mesa/main/macros.h":"73d15ddfd64f2b57b9b2ffeeb993b9c2c0899a80563e9d6ff337b11ccbe6eee5","glsl-optimizer/src/mesa/main/menums.h":"5dfac0e2279d60b0cd0c7b9fc2a5021620d0f6282ed2e738c420214e3af152d3","glsl-optimizer/src/mesa/main/mesa_private.h":"edda678b93438944279a551f663b8858ad84814a9fc88ba9672ef195599c24ae","glsl-optimizer/src/mesa/main/mtypes.h":"6efddefa099e4d2e3fdd97f0055644f47aba21711385edfeabc2d9b0676f2eec","glsl-optimizer/src/mesa/main/shaderobj.h":"9f0dfe96d0c2154201adef942bd36053533ac7b2492fb3786acda5bea514c75e","glsl-optimizer/src/mesa/main/uniforms.h":"4e331e6ad6e9cbded978b4082dbe0a57c1f8f01327446bb6892bfc179976c38b","glsl-optimizer/src/mesa/main/version.h":"9d0a13a758099302dc55cf7d045791834a89b0f9d4cf17b2692259b369a8a9a1","glsl-optimizer/src/mesa/math/m_matrix.h":"a37b19f182e070db3df93b0ede43c22fb8be8c2906504133ee6dbd7db1185d8b","glsl-optimizer/src/mesa/program/dummy_errors.c":"1820e305515b4c5e041f5e1623266a48ec8f076a155310be7d60637101f593e4","glsl-optimizer/src/mesa/program/ir_to_mesa.h":"b47f58d22e3ca2ae42d52501ea769d15c4476834944fa97eeccd3a3439211d00","glsl-optimizer/src/mesa/program/prog_instruction.h":"ab3832152a7e144b59e5a2264b2c29db56d93be31e76bbd958527a56771b40eb","glsl-optimizer/src/mesa/program/prog_parameter.h":"ba18c743284eadbc837c2c364c73e5d372321a7637a76e589d8d39fe8b5de225","glsl-optimizer/src/mesa/program/prog_statevars.h":"fc413698f84bc52d45fdeae0471934ee9904bfb7eac1a2b5f70446e54bcbbdca","glsl-optimizer/src/mesa/program/program.h":"1f01026a4eff440a3f122fd9b519d03546fe7f7d8be60dca834e95a2f8fbbfd2","glsl-optimizer/src/mesa/program/symbol_table.c":"6611cb9f078035bf5ff8c9112093a6c7d99f8af99a3931d0c07f227cc72283ea","glsl-optimizer/src/mesa/program/symbol_table.h":"631dc35ac48d5e87962d45507461920f6575610960ffcc42a08cefeb43300cda","glsl-optimizer/src/mesa/vbo/vbo.h":"6eb1dcd9a08c92f276c5fe08da184ff9d455d1be421913b8ad732a7b65e858fb","glsl-optimizer/src/util/bitscan.h":"9e49e694e6b34fe035bc685f32588827eb8cbe7d82878963c7ab52843e1c16aa","glsl-optimizer/src/util/bitset.h":"c40f78515c6230fed18345c6751ce33833a49da7a27901c7e6d7340cbdcbc5e7","glsl-optimizer/src/util/blob.c":"8f729846f66efc9c15485cc5fc24c6ec861fc1fecb2f652573f2a237d481b791","glsl-optimizer/src/util/blob.h":"93e1eaac866b9a7cd6fc03b533c18fb2edf0e97f03395eff4f3a605c4fc14d0c","glsl-optimizer/src/util/compiler.h":"79e3bf40a5bab704e6c949f23a1352759607bb57d80e5d8df2ef159755f10b68","glsl-optimizer/src/util/crc32.c":"2f3467a046b3a76784ecb9aa55d527698c8607fd0b12c622f6691aaa77b58505","glsl-optimizer/src/util/crc32.h":"59bd81865e51042b73a86f8fb117c312418df095fed2d828c5c1d1c8b6fc6cd4","glsl-optimizer/src/util/debug.c":"c3d68e9752ccc19e66c669562cd113cf1d0ac83cbb30174789e7fb8d1df58f9c","glsl-optimizer/src/util/debug.h":"50068d745c4199ccbd33d68dd4c8a36d2b5179c7869a21e75906ddd0718ca456","glsl-optimizer/src/util/detect_os.h":"343a8790d17a3710c6dd015ee367f84e3902ff3f2e36faca2bf93f9d725d3574","glsl-optimizer/src/util/disk_cache.c":"f533937e5a4fffe76e2739ef4b6b1e1da097d96d63eb808e68ebbc7027641c23","glsl-optimizer/src/util/disk_cache.h":"e83314fb14134a8e079b15e470a6376ba5a8253701f048c890a62b7e55d64bc8","glsl-optimizer/src/util/fast_urem_by_const.h":"e108fce804616c47d071dfe4a04163eec1126e448ed1aa89abb6b3a6d772bd5b","glsl-optimizer/src/util/fnv1a.h":"ab2596f19c6adf431ae27618f62c5743e24ad23ef83bb359a4c4c218245ab459","glsl-optimizer/src/util/format/u_format.h":"4cdfc0c59cbc99a092e5ec5a396910f2d93b9643e5d8141050b011e66f11e45b","glsl-optimizer/src/util/futex.h":"26f7c9d86e9ffef4c0fa2761f1aaa1918337302e20bd6ca10e61dc3c47356deb","glsl-optimizer/src/util/half_float.c":"11bc2584493d5d9d46e8c8a619a0307cf150bf5ab5d0f96bb764b061dc37a00e","glsl-optimizer/src/util/half_float.h":"7f7c380f126da1400a91758cc0392f24bf967bce1672890b62be26fe9fbd922b","glsl-optimizer/src/util/hash_table.c":"0ca40352e35dedab0a84c64c903f1b16d47e950bb5f43b4d22bb57d499bfea6e","glsl-optimizer/src/util/hash_table.h":"217191bb360592e2232f187473c10287d2cda8ae6fa5c53d0ef74c8c206118b4","glsl-optimizer/src/util/list.h":"9fab03c6a78186bb5f173269f825f6ce976b409d931852e3d93bac632e07989a","glsl-optimizer/src/util/macros.h":"63faf65b51058c483b17f1f77da51d1c53c8beab52678cb6bd01f1228a63b6b0","glsl-optimizer/src/util/mesa-sha1.c":"00c692ec353ebc02c06c57c5a71de0ab7a119f86a4146f452e65ec87e4944417","glsl-optimizer/src/util/mesa-sha1.h":"bff4c29f4bf7cdbcefb30fa0c996a7604a380eba8976467c2a60e7cd328f7e26","glsl-optimizer/src/util/mesa-sha1_test.c":"25da89a59d51469f77b4c468ca23ffdce0a7a1166a70b6cc23026a6800b0143c","glsl-optimizer/src/util/os_memory.h":"64555faf1760ae6954f42c83727c38dfc4c278e9152115779ffaad58b42adacf","glsl-optimizer/src/util/os_memory_aligned.h":"12d86fa94be38c13f7eeebdf313795e1267dd5a7187d2f0072e0e896f41702f6","glsl-optimizer/src/util/os_memory_stdc.h":"07360363b88c927065e10df71bebf6c8a0cc3b9167c9dfce55f2d65f11e6f787","glsl-optimizer/src/util/os_misc.c":"a9936e613ec84803abd59ad47c192c8e3939993c950ac91973fdc4cec1801bb8","glsl-optimizer/src/util/os_misc.h":"cc68eb12e05b5e749c54298cb4a6f4cd20cc5af7db3403e70b3c27b56090c740","glsl-optimizer/src/util/os_time.h":"73e775f7335244ff5964c678c27eedf1aea6abea44c4169d327ea8c7ce4a3a88","glsl-optimizer/src/util/ralloc.c":"4b51189595ef67bcef52c40cbf654d969041dbd15e15d4a893ad494ac060aeca","glsl-optimizer/src/util/ralloc.h":"e573c45875ff1530f0dbee9a93ae55535fdac8d5cc88a79ebc327c688824bde5","glsl-optimizer/src/util/rounding.h":"0450722353caf83de07e67f335949dbe95fe53b534052d4ee9d28d2781387614","glsl-optimizer/src/util/set.c":"86f8c9a830bead5a5a79bc970b0ff97809312af07b3beb39ef9d90af04d40a1b","glsl-optimizer/src/util/set.h":"3e39ca161e7ed4ec7c436cc9c7919ed9a55ed1b71edbf2caf6f9bcfd9bc578ed","glsl-optimizer/src/util/sha1/README":"00af7419af05247081858acb2902efd99fcda2ce16e331079f701645bb3729c0","glsl-optimizer/src/util/sha1/sha1.c":"1403bbe0aad42ba3e6be7e09f7cad87a6a8c4ad5b63962f7b92b9f37d8133b04","glsl-optimizer/src/util/sha1/sha1.h":"68d9f240eab2918026ecdf22be36811abbd4f1389f6c36e31258041aeaedd247","glsl-optimizer/src/util/simple_mtx.h":"12c6c3c4b7db9168bc656d5b3c65912075084d2b388c415d5c3d3f5953a9d6c7","glsl-optimizer/src/util/softfloat.c":"a97e51a96fe5e6a052c02aa6bbec683fe73fb88a8c087d9c930503e2120d8a2e","glsl-optimizer/src/util/softfloat.h":"66664b0250e83bf5dd4cc743acd119d076efcea624a0eab3d6b60718e6ee8811","glsl-optimizer/src/util/string_buffer.c":"63a1d1b1e34926c88ea00159cafbcd56568b805c4f64d1e8c97169fe313921fc","glsl-optimizer/src/util/string_buffer.h":"7b88d1b1d9c6cfb8e93331813535c127289437c75f822029e9a3bca8ea6b52ee","glsl-optimizer/src/util/strndup.h":"0273c4fdb7482cd7746881a63d3998648c6d63415ba85af1d1860f0e0dc504c6","glsl-optimizer/src/util/strtod.c":"5cf610d8a37373cf37cfb7aae903525d943b2674b1f32594c70b0eb19a8c9697","glsl-optimizer/src/util/strtod.h":"237396def4e264d35ed4bedea00ef9a4ceab6d7a11a18c770d9747d22c69ed2d","glsl-optimizer/src/util/u_atomic.h":"c02e809526c6c09ba8fe51f50b2490d1b6c8e5c7f3c4031ae958250d098fc3bb","glsl-optimizer/src/util/u_debug.c":"8c060e379b816618f3dd22c9ea523c68b9425c76c36a7dfe5d6d375b337f5f4a","glsl-optimizer/src/util/u_debug.h":"e11e26edd9b9e4e6f8e6a435e69f4d9edda27e9a379f68f4c82ea2525aaaea68","glsl-optimizer/src/util/u_dynarray.h":"853d0fa6ff2261614488be624deb8a2b01e57c2c8eabc28578cbeed4ccc95694","glsl-optimizer/src/util/u_endian.h":"3ccea7e529740318d8a4b05c00db3adc9d1e292a52bdc56a05c9fae99209720f","glsl-optimizer/src/util/u_math.c":"c868a8c0886dc78f1b06b13404ba8b253090449045774dd56893ac9d75795184","glsl-optimizer/src/util/u_math.h":"a04e32e126db016413f9de0a2028a3e71737137463b1289eae576f884b06fcf1","glsl-optimizer/src/util/u_memory.h":"c5db17c724c70283ddbe04165722f6988d4e0eb9aa3602ae472feff016649af9","glsl-optimizer/src/util/u_queue.h":"92930ce236c0528a98b695f5cea8c5c6aa9683beaf71a2227bdc5d33d1b21506","glsl-optimizer/src/util/u_string.h":"c5a2f4ef576d1547bda12c4ea219179fefa54414977743ac094abcaf696ef6ca","glsl-optimizer/src/util/u_thread.h":"00b708459b27f9910d18db92c18cc65cfc618ac2b3cd144e45f8640057b10d58","glsl-optimizer/src/util/xxhash.h":"2f2aff2fc6c0c929f52cf6ae7314122124c5be026d41ad1c357608383c4a37ad","src/bindings.rs":"79993db2058bde39f99ef483d02560d33b1cb882f6a552319e8b86eb6f9021e1","src/lib.rs":"04be1554cd829eb40864b06d80b491dd48117a4e3a601c7d482117f7a0391e67","wrapper.hpp":"f3ea34cc496f7d90b9bfcada3250b37b314c3524dac693b2ece9517bc7d274ac"},"package":"8ba4741358604ca0848c27ecc069d68e62e11cde81e38aac1da3c54b79ab5adf"}
|
|
\ No newline at end of file
|
|
+{"files":{".cargo_vcs_info.json":"7075d1c5c5e19288cefb431f16462eaa23229d02791120f4885ab1d20470cb7e",".gitmodules":"ffc0cce90e856d4f4bdb3bd3c950c9e59501a45ebd5022b91cfe8c07c79ef1ac","Cargo.lock":"f7970552595dc803ace9ef19b5f5d7b1fc784aac30cb27b2ebc3002d97122b9d","Cargo.toml":"335d14cea36b15461ff15802c159d1372c539e0dc40c2cd32938d4274f56b66e","Cargo.toml.orig":"7c53ee20d848f9913cacbfcb3ab2e89e30deee8d619d173c95130c7c5d065827","README.md":"4468e08c64c19977707d792bfab0080e35ff927b64990eab77873f8ba056ba1c","build.rs":"92e29699487c21389fc823c50b410cfbfc74cc774265d24958489909ee48a076","glsl-optimizer/.editorconfig":"dca7ff05a95f608849c4dc640af7f83a0f415618e327a2ecb6a0afa0d9d2bacb","glsl-optimizer/.gitignore":"8ba554a4ca510ea7d9684475aa043edbeba7d15a5c9c4a04d8b1379a04ec6270","glsl-optimizer/CMakeLists.txt":"42ce94744e82ffa000da8b64d81fc140e293b9f5da7dd4cf6b49e7404a2448d9","glsl-optimizer/README.md":"b18eef11a92d267d88a937b1154f7670ee433c730b102fdf7e2da0b02722b146","glsl-optimizer/contrib/glslopt/Main.cpp":"14ba213210c62e234b8d9b0052105fed28eedd83d535ebe85acc10bda7322dd4","glsl-optimizer/contrib/glslopt/Readme":"65d2a6f1aa1dc61e903e090cdade027abad33e02e7c9c81e07dc80508acadec4","glsl-optimizer/generateParsers.sh":"878a97db5d3b69eb3b4c3a95780763b373cfcc0c02e0b28894f162dbbd1b8848","glsl-optimizer/include/GL/gl.h":"1989b51365b6d7d0c48ff6e8b181ef75e2cdf71bfb1626b1cc4362e2f54854a3","glsl-optimizer/include/GL/glext.h":"2ac3681045a35a2194a81a960cad395c04bef1c8a20ef46b799fb24af3ec5f70","glsl-optimizer/include/KHR/khrplatform.h":"1448141a0c054d7f46edfb63f4fe6c203acf9591974049481c32442fb03fd6ed","glsl-optimizer/include/c11/.editorconfig":"f96a2354e5f2b90367d643e6d9e980ce76278d4d47afd8b2713b595753aa8b4b","glsl-optimizer/include/c11/threads.h":"56e9e592b28df19f0db432125223cb3eb5c0c1f960c22db96a15692e14776337","glsl-optimizer/include/c11/threads_posix.h":"f8ad2b69fa472e332b50572c1b2dcc1c8a0fa783a1199aad245398d3df421b4b","glsl-optimizer/include/c11/threads_win32.h":"95bf19d7fc14d328a016889afd583e4c49c050a93bcfb114bd2e9130a4532488","glsl-optimizer/include/c11_compat.h":"103fedb48f658d36cb416c9c9e5ea4d70dff181aab551fcb1028107d098ffa3e","glsl-optimizer/include/c99_compat.h":"aafad02f1ea90a7857636913ea21617a0fcd6197256dcfc6dd97bb3410ba892e","glsl-optimizer/include/no_extern_c.h":"40069dbb6dd2843658d442f926e609c7799b9c296046a90b62b570774fd618f5","glsl-optimizer/license.txt":"e26a745226f4a46b3ca00ffbe8be18507362189a2863d04b4f563ba176a9a836","glsl-optimizer/src/compiler/builtin_type_macros.h":"5b4fc4d4da7b07f997b6eb569e37db79fa0735286575ef1fab08d419e76776ff","glsl-optimizer/src/compiler/glsl/README":"e7d408b621c1b605857c4cab63902f615edb06b530142b91ac040808df6e22f7","glsl-optimizer/src/compiler/glsl/TODO":"dd3b7a098e6f9c85ca8c99ce6dea49d65bb75d4cea243b917f29e4ad2c974603","glsl-optimizer/src/compiler/glsl/ast.h":"3e68ff374350c49211a9931f7f55a485d8d89fc4b21caaffbf6655009ad95bf8","glsl-optimizer/src/compiler/glsl/ast_array_index.cpp":"92b4d501f33e0544c00d14e4f8837753afd916c2b42e076ccc95c9e8fc37ba94","glsl-optimizer/src/compiler/glsl/ast_expr.cpp":"afd712a7b1beb2b633888f4a0911b0a8e4ae5eb5ab9c1e3f247d518cdaaa56d6","glsl-optimizer/src/compiler/glsl/ast_function.cpp":"74f4fbd490e366b37f4715168bb3465ecd9334d4130942f75dcc8e80e8e7f027","glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp":"d0f798eb09271d41d068b9e7b18220d37f1ed0083300ab51eba30989698fe23d","glsl-optimizer/src/compiler/glsl/ast_type.cpp":"8eb790b24b26dfb72bdc333744b566c26d8464c5d47d20eae659461f5c4899f7","glsl-optimizer/src/compiler/glsl/builtin_functions.cpp":"4a76d998a4f1952085c3377a30c7944dbfc0422b5418a6a13e3280a497bc5f2f","glsl-optimizer/src/compiler/glsl/builtin_functions.h":"a37cad7ed09b522c5b8bec7b80115a36846e7ba6e0874a2a858e32f7f202c665","glsl-optimizer/src/compiler/glsl/builtin_int64.h":"619def6f3aebf180da3944ef08f159ab12a58b24767e41d8b985ac37ded54d62","glsl-optimizer/src/compiler/glsl/builtin_types.cpp":"afec060b62d6f3b00bfbf94e9fa5f96341ce096c128d1eef322791e6ed9cea4d","glsl-optimizer/src/compiler/glsl/builtin_variables.cpp":"6563bfb1345cbca4c77e00eef09ad152f3e1dc271d246a08c5ce9e1f4ce4250a","glsl-optimizer/src/compiler/glsl/float64.glsl":"1072fd888be48c2a7a5117cd2d92a65f034965a66375f598bb856bff5d7be766","glsl-optimizer/src/compiler/glsl/generate_ir.cpp":"e5f0175370a0d07f93c48d3f0f1b8233d12c64a7b02de02dcc753ef7b398ef0f","glsl-optimizer/src/compiler/glsl/glcpp/README":"a0332a1b221d047e9cce5181a64d4ac4056046fd878360ec8ae3a7b1e062bcff","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c":"2d179879b1ffe84f58875eee5b0c19b6bae9c973b0c48e6bcd99978f2f501c80","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l":"e4c5744c837200dafd7c15a912d13f650308ea552454d4fa67271bc0a5bde118","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.c":"03494f9ce1cb82260506e2559e73a3eeb622c4bd51b65eaa0a2c3351862bd4c8","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.h":"264d9a18421cde255ce34a0a62b3d8e73465359f0d167e64aa3973062aae5bdd","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.y":"fafb66e3a8f149d19e085f18a4273ba6d4c11af9e9a01d665cc784dddf97b79f","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.c":"37ed294403c2abfd17fd999d1ae8d11b170e5e9c878979fefac74a31195c96b0","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.h":"85ac8b444bcbd0822b66448a1da407b6ae5467b649f5afaf5c58325bd7569468","glsl-optimizer/src/compiler/glsl/glcpp/pp.c":"a52d94f1bcb3fb2747a95709c4a77c25de7eea8354d2b83bb18efd96976a4473","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.c":"d11aeb3acfe966d1b78f1ee49804093f2434214c41391d139ffcb67b69dc9862","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.h":"abbf1f36ec5a92d035bfbb841b9452287d147616e56373cdbee1c0e55af46406","glsl-optimizer/src/compiler/glsl/glsl_lexer.cpp":"272b9fc1383d72b81bfc03fa11fdf82270ed91a294e523f9ce2b4554bd3effa9","glsl-optimizer/src/compiler/glsl/glsl_lexer.ll":"2b57d9f9eb830c3d7961d4533048a158ee6f458c8d05c65bea7b7cfbc36e4458","glsl-optimizer/src/compiler/glsl/glsl_optimizer.cpp":"f8095d20629d0af70be930b0612e169edb274551a1d25a3cd1bf9995a11ce2e8","glsl-optimizer/src/compiler/glsl/glsl_optimizer.h":"22e843b4ec53ba5f6cd85ca5f7bad33922dca8061b19fb512d46f1caca8d4757","glsl-optimizer/src/compiler/glsl/glsl_parser.cpp":"126baf368d525aba301854e3d91ba60b5aee32e1102376af71416f32cb95ec48","glsl-optimizer/src/compiler/glsl/glsl_parser.h":"2ea9a50716098a8f7bef782d2a030d757b68da73afb01b4d4940d3e8381d44e8","glsl-optimizer/src/compiler/glsl/glsl_parser.yy":"6b1fd1576b29fce005dff744a6dbd0219e4c695c361d61864e1f3a8d6fa6b764","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.cpp":"aad64b5b66467da650091430681e8c6a820cf3cadc4db3c160bf2f15875390ae","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.h":"71fd0e92bbdb193dfb067d7bfdb1200d77392be2fbd0cbfc9ca89d1bb4c7e741","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.cpp":"6660fb83c0ddddbbd64581d46ccfdb9c84bfaa99d13348c289e6442ab00df046","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.h":"24682b8304e0ea3f6318ddb8c859686bd1faee23cd0511d1760977ae975d41bf","glsl-optimizer/src/compiler/glsl/hir_field_selection.cpp":"72a039b0fcab4161788def9e4bedac7ac06a20d8e13146529c6d246bd5202afd","glsl-optimizer/src/compiler/glsl/int64.glsl":"303dbe95dde44b91aee3e38b115b92028400d6a92f9268975d607471984e13eb","glsl-optimizer/src/compiler/glsl/ir.cpp":"2b4741cce90b5d4abff5d719c7324e2693c67294d4d99736cb241554adb281bc","glsl-optimizer/src/compiler/glsl/ir.h":"990b1c74447c4eb4835353ccb0ed9aea644f97fc1129ef1739cd935075d85d2e","glsl-optimizer/src/compiler/glsl/ir_array_refcount.cpp":"8cdc1cffe01e42e0566fa2193a75f789628e8025ad1b82f0ee6f204451b7f9f7","glsl-optimizer/src/compiler/glsl/ir_array_refcount.h":"75f06ec81342b379096ca52e1dc0fd5f19a11ff8e9b58203c20628179d644c12","glsl-optimizer/src/compiler/glsl/ir_basic_block.cpp":"1e2920b1c0ecb08424c745c558f84d0d7e44b74585cf2cc2265dc4dfede3fa2f","glsl-optimizer/src/compiler/glsl/ir_basic_block.h":"81be7da0fc0ee547cd13ec60c1fcd7d3ce3d70d7e5e988f01a3b43a827acdf05","glsl-optimizer/src/compiler/glsl/ir_builder.cpp":"daba29c5a1efdd5a9754f420eb3e2ebdf73485273497f40d4863dadeddb23c0d","glsl-optimizer/src/compiler/glsl/ir_builder.h":"2822e74dd3f6e3df8b300af27d5b11ea2dd99d0e5e7ca809b7bbcce9833c483c","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp":"8c6df5abf2fe313363f285f171c19ca6c8ee4f3bc2ed79d33c0c88cc8be45c48","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.h":"799852adc3a0e54d04080655e7cebfa0d3bf5b6ffed5d8414f141380665d4db7","glsl-optimizer/src/compiler/glsl/ir_clone.cpp":"d897a4e1f5bbec4a6a2f15044c1be9a4d13899c73be77335b041049a4589aa5d","glsl-optimizer/src/compiler/glsl/ir_constant_expression.cpp":"78bd87ddb09db67f6c499067728d72aef4f16aa02721a99a4b769d1e0cfa9010","glsl-optimizer/src/compiler/glsl/ir_equals.cpp":"bca28533a6310b0fc152b56d80872368f1510dc62ed6e8ac199b9ffa7fac02e7","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.cpp":"7e918d4e1f237eca01396004015865ce345afe32a876c9dbc6728576a1a7eae4","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.h":"f45b66aa9497520e7e08e612d24b308477c34477fbd963ee9320eac664957f16","glsl-optimizer/src/compiler/glsl/ir_expression_operation.h":"cc9f10727dbd26cac506804f51456302c702650f9eeb59054a7e1575d5cf6687","glsl-optimizer/src/compiler/glsl/ir_expression_operation.py":"7b86c96021b9fbe165957f4ecb0b612fefcde1c2cf3c6d75e3cdb22e369216ba","glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h":"9ad3346416392e3efa11e12ecf2feca7453c5253d241eb96c91dfb85d4f2b971","glsl-optimizer/src/compiler/glsl/ir_expression_operation_strings.h":"a6826daf496a8b9e89885bc2a161ac3445d501b23c6e0ac33e2c01b506b273c8","glsl-optimizer/src/compiler/glsl/ir_function.cpp":"7537365fc0fbe4b37a26b9a2146cc64d3e9a774d60eab63b65002ad165ae8fc7","glsl-optimizer/src/compiler/glsl/ir_function_can_inline.cpp":"faddbf112187a048d502716a3fb82570a322299ba2a3abd79388382c82040bfc","glsl-optimizer/src/compiler/glsl/ir_function_detect_recursion.cpp":"9176973eaf5c0a984701f953bb7a80f37dca43d59b5bce50fc69b3f02f2902d7","glsl-optimizer/src/compiler/glsl/ir_function_inlining.h":"9739493f99c489987d650762fccdd3fb3d432f6481d67f6c799176685bd59632","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.cpp":"3725861fbe2b98e0617f52d3b14cf6d3b25fb5ec00f5ef5d308b03642f592767","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.h":"e0560210e966c0c31e4ca843e80ea154e64db5a444b8c2df845b6ba5b3a43fc1","glsl-optimizer/src/compiler/glsl/ir_hv_accept.cpp":"caf7ce2cd9494aadd3c58bcf77f29de58368dc9e347a362bbf37f8bda9509b80","glsl-optimizer/src/compiler/glsl/ir_optimization.h":"8b3dcfc7f9e96b21a8dd47a0040d90be483a9e67a2cdce3a697188fb758d4630","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp":"f8e34a983452be0dcb5a695e9c8e895eead24f9e540992a8afe510ae85da4c4c","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.h":"1ad1bd3efd1ace39051c13f904c05fd80425d329444f9a8d47fd6d948faf46e0","glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp":"643f5a68aae3fb37267fd793f1216d1cfdeb2c09338c26b1f30e4c6deaef4de5","glsl-optimizer/src/compiler/glsl/ir_print_visitor.h":"4573eb93268a2654c14b505253dd651e2695d43dc745904d824da18305269b95","glsl-optimizer/src/compiler/glsl/ir_reader.cpp":"06bfba802c8354e5a8b2334b6d78d6297de18235bedd3f8fbb382c89870b02f2","glsl-optimizer/src/compiler/glsl/ir_reader.h":"63e3f7f1597936a7011d5b520e171b197bf82bee6c1560d822c3edf5aaa6f9e9","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.cpp":"84b5c5d746555adca85759c2912fe48010232b7c1c0bd2cf03bd04067a85e66f","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.h":"fd8c561b71085d3211fff85ed514fecb299d8ce19a04bc063419a55b6d840525","glsl-optimizer/src/compiler/glsl/ir_set_program_inouts.cpp":"ab9f115ce9e7f312d9c7978340ced0dc4ae6d13a80e08442ba9709d11d50cae5","glsl-optimizer/src/compiler/glsl/ir_uniform.h":"683ae6896b1a08470c090be5f822fc31cd434eab9216e954b9bba24a46975109","glsl-optimizer/src/compiler/glsl/ir_unused_structs.cpp":"9c1620c45f2fc071fe5ed828472040b14c5f42effe06aa0e3b8352c95ef78786","glsl-optimizer/src/compiler/glsl/ir_unused_structs.h":"13387b49c23093575276b25b9dfd31fedd8f131c5c4f3128ab04cf03e15b5295","glsl-optimizer/src/compiler/glsl/ir_validate.cpp":"6b232be5999a86ea278f4f15b2832d76843246509118d924243055a3b9b0299f","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.cpp":"2764a3cad937d53f36db7447c3a5b98b04bf153acf81074d971857fc5bca460d","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.h":"b0668e3eb1501ef65e38fe12830742ecb3d28e6039f30e366c8924efc29b4a39","glsl-optimizer/src/compiler/glsl/ir_visitor.h":"f21b3534c3d66d5fb707d1581fece7e1eb043523afbaedf89918cfb031c6df94","glsl-optimizer/src/compiler/glsl/link_atomics.cpp":"360f0209e11f367ba358223597b0a118bae095bff16337cf03f1fb89c5b80ca6","glsl-optimizer/src/compiler/glsl/link_functions.cpp":"de7895da8aa33a1e3c2c1eb2fdaf267ab5d1fbfdb79ae2e67f95211e946e294c","glsl-optimizer/src/compiler/glsl/link_interface_blocks.cpp":"1926cfa73810704eb19b916c1b2cdb9321155e2f98b2a0a57c7c3c6e960540cd","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.cpp":"1e14e06ca3b2c1089cfba2e8eaf0c1f373d9d6374b6082f320962dd71ae09611","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.h":"fd58c155af645295bb6aec08797889de586f4d919731de2bce57e8dce59bb048","glsl-optimizer/src/compiler/glsl/link_uniform_blocks.cpp":"09589f49776dce32e6c4044937de7e0c839a9754ad31960148f8f9e010658997","glsl-optimizer/src/compiler/glsl/link_uniform_initializers.cpp":"bf98e08c12db466acf9623cbeb8fa8e3b4002512722e7a6521287f558a099f37","glsl-optimizer/src/compiler/glsl/link_uniforms.cpp":"84bad5b1377362cecf259b05124239be5220b03ce1c0c61b59bd9a47e4379af2","glsl-optimizer/src/compiler/glsl/link_varyings.cpp":"a5f1a53e7c80d635515fe808ff223d89fef1767abb0f2b7aa28fa6773dca353f","glsl-optimizer/src/compiler/glsl/link_varyings.h":"b9dbe018f038df69763df2e928742ce81bbc6e3aaba26f50621e30a6d9aa6220","glsl-optimizer/src/compiler/glsl/linker.cpp":"40b1ecd5d4f6c7f13d5a87ce390561a51fdf6f3fcd9b2197b9c88b03a773ba94","glsl-optimizer/src/compiler/glsl/linker.h":"ecf94b4ad75ef461c27c557fda4bd25f34c91930822b8e1d729ec84520d4a049","glsl-optimizer/src/compiler/glsl/linker_util.cpp":"1663ad88e2a369305659aeeffaedb5bd752cf76340a2ba5797fc0bf600633cf9","glsl-optimizer/src/compiler/glsl/linker_util.h":"6db788daf9c8e87ae2764b61a8b37ebe419e69c1b82ddee01986e37c978c6993","glsl-optimizer/src/compiler/glsl/list.h":"b1f46ce0e552fe7c45b2a19408a9d97662e23e4b182ab335491c26f8cf25886f","glsl-optimizer/src/compiler/glsl/loop_analysis.cpp":"57ecd573477c68091c7cc99537faa7139a8f395935e3d4f10144cefdefb5a611","glsl-optimizer/src/compiler/glsl/loop_analysis.h":"a85f045a038ee5b5176063e85d7988865862c44ab0580f771b993a042d0b69cc","glsl-optimizer/src/compiler/glsl/loop_unroll.cpp":"bd4292ea2809f5a669bcb76ceaa1ac365772dcd638c579c3ed10275214901a54","glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp":"8cfbef140d9c4b4d2f57bfa05c9c374d31a121d0f87afce94333f049023b654a","glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp":"1ae221c3c7a95aeb867207e7a742be635f91b406c157747bfd6ddf10274d97fb","glsl-optimizer/src/compiler/glsl/lower_buffer_access.h":"807886953a576a323591798cbca5e2df24295ea893b28affd8ffb5926cebaa04","glsl-optimizer/src/compiler/glsl/lower_builtins.cpp":"4d81afc32cf58e1481fcb5e42888ab93dbe6820310a20ff7a9982b77b2152d9b","glsl-optimizer/src/compiler/glsl/lower_const_arrays_to_uniforms.cpp":"608403f0eeeedf21cfcd3014116e0f44e28cbdf6c4c32aac7e613e64e30205e1","glsl-optimizer/src/compiler/glsl/lower_cs_derived.cpp":"179905cd47a294122adeb5b0abfed6f2f67782dcde21b544d1ee2c1985154e66","glsl-optimizer/src/compiler/glsl/lower_discard.cpp":"3b361b2db0004d544d64611cb50d5a6e364cf6c5f2e60c449085d7d753dd7fb0","glsl-optimizer/src/compiler/glsl/lower_discard_flow.cpp":"f5c29b6a27690bb5c91f196d1a1cf9f6be4f1025292311fe2dac561ce6774dee","glsl-optimizer/src/compiler/glsl/lower_distance.cpp":"a118c85493d5d22b2c059a930c51a5854896d4b1dade76598eaa985e5a3dff8c","glsl-optimizer/src/compiler/glsl/lower_if_to_cond_assign.cpp":"469e617757fd1728709cce021aac5c8da05ee503bf5366977bdc4ef7a6d83950","glsl-optimizer/src/compiler/glsl/lower_instructions.cpp":"6ff5c396abe40d8a2145d571e99e2bbe9143393e15aafc28adc2803a01d821b6","glsl-optimizer/src/compiler/glsl/lower_int64.cpp":"d1ed41196880dd53c7b13e2782f9423f8442bf1d46186e8be92b1b66218a83ee","glsl-optimizer/src/compiler/glsl/lower_jumps.cpp":"34de7b493f281589fb0c2c0f6e885d0a0fabbe7a4e97a73de374dd714777a58c","glsl-optimizer/src/compiler/glsl/lower_mat_op_to_vec.cpp":"dff7a308edc4846c348ed4225c6699a9c75abac68d88f41f85954276552779f4","glsl-optimizer/src/compiler/glsl/lower_named_interface_blocks.cpp":"16063ac127bff75a68272070ab11c21c25101edbff62b4c68f4983b4cd941af0","glsl-optimizer/src/compiler/glsl/lower_offset_array.cpp":"3b00773399135aea85746a5a68b96ef000bc6841be1a2c8e6f25c516628b0949","glsl-optimizer/src/compiler/glsl/lower_output_reads.cpp":"a0fc9975d5aa1617e21fc6c353659a9802da9e83779a3eef4ec584f74b4dadc5","glsl-optimizer/src/compiler/glsl/lower_packed_varyings.cpp":"7550099d4ae123d71541c2fc88bc04fbfe9271ec75d7e210987d1c8cac3cf3ea","glsl-optimizer/src/compiler/glsl/lower_packing_builtins.cpp":"79a13d161fe505a410ab948d92769395708693ec888153630fa240e5b97e356f","glsl-optimizer/src/compiler/glsl/lower_precision.cpp":"f82a185b879872b977a1787d8061b9a80bc4cf8db1b970db6efba2ad9cc20fa2","glsl-optimizer/src/compiler/glsl/lower_shared_reference.cpp":"ea2dccf50a83bc19391bf6b7ab6aa53c0005f427af4066d25140340af9a4beef","glsl-optimizer/src/compiler/glsl/lower_subroutine.cpp":"f69fa53650eeb6f2944fce4d36a6e0a423e6705f3a3bd3389c7fadb83cfc8802","glsl-optimizer/src/compiler/glsl/lower_tess_level.cpp":"b196c9d424c0569f3e85d75c2d125af21566cb113d69036db87c0990703e0fa7","glsl-optimizer/src/compiler/glsl/lower_texture_projection.cpp":"4d247f244272adc8250fd888d8d932a140dd5de4d1efc7a58492c3c2b8291527","glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp":"89bdbc6c1669230c644c0857db1ce2781ec61d349ecd08c7914146e1f4750a4a","glsl-optimizer/src/compiler/glsl/lower_variable_index_to_cond_assign.cpp":"fce930f29ac9405b297d1f749d68f59506b89c70b4ee1b1ab8cf49a34cc71ecf","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_cond_assign.cpp":"3c67d851a11a55fad1c49a550f3a0cfe50892d33a3f238ce266cd829eba510a8","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_swizzle.cpp":"f5ec666b73e1415cbab32519a53605ed385f3b03e889560373dbce69dda5000e","glsl-optimizer/src/compiler/glsl/lower_vector.cpp":"f7c13f5572ebe09b6a71553133b2cf003cd4b77b9657600672ee3b21bf890725","glsl-optimizer/src/compiler/glsl/lower_vector_derefs.cpp":"b05793da6dd620a531b43df5af8b2ecbc37b9db0c88910f5724ea10bcd057e19","glsl-optimizer/src/compiler/glsl/lower_vector_insert.cpp":"fee772ec17eea5e86a529bf9c5fa2ee0d29a5982bb75ebc6d68ed36cd19aa299","glsl-optimizer/src/compiler/glsl/lower_vertex_id.cpp":"690e8715182e03fead5cc5a35251fb4f41b357e4c71a1dfbc4bd7be19862b56d","glsl-optimizer/src/compiler/glsl/lower_xfb_varying.cpp":"58c0e8b270e4bbde54250be03cdb2f36966bcafb785372ad2e2b786835df7f9f","glsl-optimizer/src/compiler/glsl/main.cpp":"ae5e88abbbc8a12f769e1296bad938b9d7398cc6da0d3d0caeceeeb876536850","glsl-optimizer/src/compiler/glsl/opt_add_neg_to_sub.h":"f5054944bfd068810629080d0ea11df78b3f57a8f86df75e13ca50157ad1964d","glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp":"25f45b20e1972ee8c789177a1aeda6e4286c25db2eae3a43ff83029ae64969c0","glsl-optimizer/src/compiler/glsl/opt_array_splitting.cpp":"19d3ce0e815438f4df9ab2890e767b03a4f3f191b53bb30c0217cf2ae6a95430","glsl-optimizer/src/compiler/glsl/opt_conditional_discard.cpp":"0e44e0e126711a3725c1f3a2aa65ff03c381fed08680ffc30101aae60f716c4e","glsl-optimizer/src/compiler/glsl/opt_constant_folding.cpp":"a088d04d9b45f9e55e235835648f614c89b7803c03a6d4f6a6d1a6bc1f0228bd","glsl-optimizer/src/compiler/glsl/opt_constant_propagation.cpp":"8a9440d77ecd6dcf13e683cbb99943aab6311c8fd4b5f6a9189a8d4f270746f4","glsl-optimizer/src/compiler/glsl/opt_constant_variable.cpp":"63d3ccd4dd09f19c9cf1a2f51592111bed41284504f29f3c0de4cadebc439a37","glsl-optimizer/src/compiler/glsl/opt_copy_propagation_elements.cpp":"ffa0f50863995e0d2e31f55a52e82319edc71e520987bebd7f7e561ea331c64b","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_variables.cpp":"84e8747b948232f01dd56b428b9315f96f9511f605f240119fc446fae28981a9","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_varyings.cpp":"761523e88f5b3ba785170f4d7205e94fa99acb7e74d29efbe40e1c010e1dbdb3","glsl-optimizer/src/compiler/glsl/opt_dead_code.cpp":"fd1ba2da7337d4e5dad17f5c2d73d9cc8880305f423e85d64cf94553588fa401","glsl-optimizer/src/compiler/glsl/opt_dead_code_local.cpp":"969a598b4df322baf222258a66cd64a326ea20e5b3125be9d8d1771f522c69e0","glsl-optimizer/src/compiler/glsl/opt_dead_functions.cpp":"774cae6536d02edf26e996a2a895e1f62d5098f16dc96b44798b4fc731a9a95f","glsl-optimizer/src/compiler/glsl/opt_flatten_nested_if_blocks.cpp":"3696a5c55f02e20056e085bc2714f73ac992f221b6f3387d655068e86b512046","glsl-optimizer/src/compiler/glsl/opt_flip_matrices.cpp":"44f0fe05b49329667671f88c96dc86ab3fe1459ff7b87f2b2d88de2d49829f9f","glsl-optimizer/src/compiler/glsl/opt_function_inlining.cpp":"fb56a33c90419a01676b57cbd91d0674a54cca40e6defaacc88dd33facebc131","glsl-optimizer/src/compiler/glsl/opt_if_simplification.cpp":"ac406eb35e379c357641d6c5749f50c65961455924d3dc884e2b90046fa92c5c","glsl-optimizer/src/compiler/glsl/opt_minmax.cpp":"8abd59d3b14ef60ff14a9c69660e6945f5cf10b97edb4afebe56be3f81d96316","glsl-optimizer/src/compiler/glsl/opt_rebalance_tree.cpp":"8bb6329dc0f299042368fc81934c2df019b45ab9f7aa0415d4e57b8d1ff98c9f","glsl-optimizer/src/compiler/glsl/opt_redundant_jumps.cpp":"222c73e2ac7a938ebb6428cc6c780c908ff6156d8ff935b04fed93a48fc10496","glsl-optimizer/src/compiler/glsl/opt_structure_splitting.cpp":"2edc79cc13f3177934e0443ad62f5976a1991f01f86ea303a803434849b13a47","glsl-optimizer/src/compiler/glsl/opt_swizzle.cpp":"015d0abddfe507f67c4b96c82988d861d018ededf7bf055e2bcbe9ea92da694e","glsl-optimizer/src/compiler/glsl/opt_tree_grafting.cpp":"46d28ac983ea244a4315bdc0e8892979ec4d1f9b9a96ac8a8a08006d9bc5e878","glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp":"d80ee43bb97d9f016fb9c5e1e06f5b2afa569811f368ba067be794ec11d085fb","glsl-optimizer/src/compiler/glsl/program.h":"2982447e2abd35371e273ad87951722782a8b21c08294f67c39d987da1e1c55f","glsl-optimizer/src/compiler/glsl/propagate_invariance.cpp":"080943e21baa32494723a2eefb185915d2daae1f46d6df420145c5ad6857e119","glsl-optimizer/src/compiler/glsl/s_expression.cpp":"1ced972bc6ecc8eab4116ea71fb0212ab9ae5bcc0be3b47aa5d9d903566b3af1","glsl-optimizer/src/compiler/glsl/s_expression.h":"65b847e30e22a809b57d0bc70243049c99d9c6318803c5b8d0826aba55dc217e","glsl-optimizer/src/compiler/glsl/serialize.cpp":"be0eb4251348a9d921acb839a5c48c6023a2e9d116d602bb0432787ab623655d","glsl-optimizer/src/compiler/glsl/serialize.h":"57425732eba1233d928e5f07f88b623ce65af46b3bb034bf147f0a4b7f94f9a1","glsl-optimizer/src/compiler/glsl/shader_cache.cpp":"e0c5c433f2df3fccdf1d61281bfcb0ee5633433339b97c697d64db99611cbaaf","glsl-optimizer/src/compiler/glsl/shader_cache.h":"9217164d8d7f54aca0fe5922c7187095a6ae0cb703b196b79805aeef07a7e697","glsl-optimizer/src/compiler/glsl/standalone.cpp":"8e6c416a14d631261917a5fe4cc91880c287b22b2dfd70eb22028289a8fa5364","glsl-optimizer/src/compiler/glsl/standalone.h":"a7c397d1dfdd1e7fb2cfe99db35cd9df93251e642059208533202b7f20497f83","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.cpp":"970d14b7a9d58e5270321f97bf5d57795558b1c570a56678e04a65b26c60bf4f","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.h":"d921a617ea82b9e49413314492a645c44356de503581b1be3f1b57de236e480d","glsl-optimizer/src/compiler/glsl/string_to_uint_map.cpp":"d824bf5b839bd39498dc9e457103cdbe3e5289ddf7564107c27b1505948dd31f","glsl-optimizer/src/compiler/glsl/string_to_uint_map.h":"e2f18e66359c9d620e085de7f4a334a47df9c66e65a5bfe8b734c627bec04104","glsl-optimizer/src/compiler/glsl/test_optpass.h":"b27b8f35f5387e7ce4982bb51c7b63ccf14f91757f3108a5d02ed006925bb8a0","glsl-optimizer/src/compiler/glsl/xxd.py":"376484142f27f45090ea8203ae2621abf73f06175cb0ee8d96f44a3b9327f4bd","glsl-optimizer/src/compiler/glsl_types.cpp":"044bb6754f45419a3151e7a25c39202a82009ae3c6bc54ff7f0bb4258a5deefe","glsl-optimizer/src/compiler/glsl_types.h":"fd899a42f34ddeb8601bc3cd6c5e3aed82fc8aef4042dde1b39b3c01e1dcc219","glsl-optimizer/src/compiler/shader_enums.c":"436bff5216b11b0980bdfada5885fc6ac9afa2037a3027fcd6eea2a8635597ac","glsl-optimizer/src/compiler/shader_enums.h":"13220442a5c02e83540cf2c0ad4f8417b2fbda5f2586dec4e92082544c937cdd","glsl-optimizer/src/compiler/shader_info.h":"4c5453e81197ca83593ee4f365074b23530f2ab21c78e1733b63dec6f344c12a","glsl-optimizer/src/gallium/auxiliary/util/u_half.h":"3c2b37bda3ccb64387e44b723d29cf9046decab1a893bf42d842e9603398bdee","glsl-optimizer/src/gallium/include/pipe/p_compiler.h":"c75620096ce8523dae90599e50aa2ef6468d3b0e368a77795edeb20dd1abfc0c","glsl-optimizer/src/gallium/include/pipe/p_config.h":"a27692fc35f9e55df3224b7529e66b3001e911e94e6bc5f8f569e493e1ee3fb7","glsl-optimizer/src/gallium/include/pipe/p_defines.h":"be26d68c0acc67c5e44788c6299716a9eee415fd81d7d747e3738a829e3b6b38","glsl-optimizer/src/gallium/include/pipe/p_format.h":"5674215fc41d27496f037cf837717daefbf23ebb38d40ace7c0c414bc08182b0","glsl-optimizer/src/gallium/include/pipe/p_state.h":"d600593aba5f5a17072a6c38f6baa81e01c7994b0174250f7e433bb41684b702","glsl-optimizer/src/mapi/glapi/glapi.h":"73632a625c0ddabc401205e8b5a81eb8af8506868efe4b170d7979ec3619e9c5","glsl-optimizer/src/mesa/main/config.h":"5800259373099e5405de2eb52619f9de242552a479902a3a642a333c8cb3c1e7","glsl-optimizer/src/mesa/main/context.c":"2f3208473d99c94f734b1137ba91889d4a1babb9e7534bf1dc85d851ee98274e","glsl-optimizer/src/mesa/main/context.h":"cc7e4194797db9d007f01884e23d786c453b3860821f7f2ddcdf0f1bf3f8ffb1","glsl-optimizer/src/mesa/main/dd.h":"6a964acd06b6c2d88700e69fb75fe3c6b3b3d45bbc41db24f3f897a29695fe0c","glsl-optimizer/src/mesa/main/debug_output.h":"7312422e90b8c0e34028ac27280e438139b5cba525c99deb3ac883cd3d87e452","glsl-optimizer/src/mesa/main/draw.h":"7eaef3a9e27a60ea6f7937109bf3a6190b831162fde0479abb12077ce27c353d","glsl-optimizer/src/mesa/main/enums.h":"87d562a6764f51c014a2274fa7c3aca17c04441537ddd56b2554f13c6fffea92","glsl-optimizer/src/mesa/main/errors.h":"c79444b5df289c90fbb22a33b2d0c23917d9fc4510960088f0b79e53bb56b1b2","glsl-optimizer/src/mesa/main/extensions.h":"a38b2f87cc93c513994281350d69e06c84ff8eded5313ec0a1be33f375e0ebbd","glsl-optimizer/src/mesa/main/extensions_table.c":"17642d1a8c9a0bf2bd61060052d33ff14a005d2b962e6cf91465797a50851e85","glsl-optimizer/src/mesa/main/extensions_table.h":"2c879571c238d2e14461031ac740372fd0f9ac3a34c0d5541bb9b7ed4c0376c8","glsl-optimizer/src/mesa/main/formats.h":"02e2f7ec3e39286cf9f27e2641043e6df8ecb1dfde9e643313210e214af2a929","glsl-optimizer/src/mesa/main/glheader.h":"58217b33eead6aa6b23cd4a291cefeaa6cb84e465f4960daffca97c44d6d1c35","glsl-optimizer/src/mesa/main/glthread.h":"51fb2711f77e7eafcfc52d29d5b844978832b24c930d88accd48d143a6eb9c6f","glsl-optimizer/src/mesa/main/hash.h":"7e7f782034c16a8e693de48e00c31d4a90b0129f4029fd074033d7d16ccbe718","glsl-optimizer/src/mesa/main/macros.h":"73d15ddfd64f2b57b9b2ffeeb993b9c2c0899a80563e9d6ff337b11ccbe6eee5","glsl-optimizer/src/mesa/main/menums.h":"5dfac0e2279d60b0cd0c7b9fc2a5021620d0f6282ed2e738c420214e3af152d3","glsl-optimizer/src/mesa/main/mesa_private.h":"edda678b93438944279a551f663b8858ad84814a9fc88ba9672ef195599c24ae","glsl-optimizer/src/mesa/main/mtypes.h":"6efddefa099e4d2e3fdd97f0055644f47aba21711385edfeabc2d9b0676f2eec","glsl-optimizer/src/mesa/main/shaderobj.h":"9f0dfe96d0c2154201adef942bd36053533ac7b2492fb3786acda5bea514c75e","glsl-optimizer/src/mesa/main/uniforms.h":"4e331e6ad6e9cbded978b4082dbe0a57c1f8f01327446bb6892bfc179976c38b","glsl-optimizer/src/mesa/main/version.h":"9d0a13a758099302dc55cf7d045791834a89b0f9d4cf17b2692259b369a8a9a1","glsl-optimizer/src/mesa/math/m_matrix.h":"a37b19f182e070db3df93b0ede43c22fb8be8c2906504133ee6dbd7db1185d8b","glsl-optimizer/src/mesa/program/dummy_errors.c":"1820e305515b4c5e041f5e1623266a48ec8f076a155310be7d60637101f593e4","glsl-optimizer/src/mesa/program/ir_to_mesa.h":"b47f58d22e3ca2ae42d52501ea769d15c4476834944fa97eeccd3a3439211d00","glsl-optimizer/src/mesa/program/prog_instruction.h":"ab3832152a7e144b59e5a2264b2c29db56d93be31e76bbd958527a56771b40eb","glsl-optimizer/src/mesa/program/prog_parameter.h":"ba18c743284eadbc837c2c364c73e5d372321a7637a76e589d8d39fe8b5de225","glsl-optimizer/src/mesa/program/prog_statevars.h":"fc413698f84bc52d45fdeae0471934ee9904bfb7eac1a2b5f70446e54bcbbdca","glsl-optimizer/src/mesa/program/program.h":"1f01026a4eff440a3f122fd9b519d03546fe7f7d8be60dca834e95a2f8fbbfd2","glsl-optimizer/src/mesa/program/symbol_table.c":"6611cb9f078035bf5ff8c9112093a6c7d99f8af99a3931d0c07f227cc72283ea","glsl-optimizer/src/mesa/program/symbol_table.h":"631dc35ac48d5e87962d45507461920f6575610960ffcc42a08cefeb43300cda","glsl-optimizer/src/mesa/vbo/vbo.h":"6eb1dcd9a08c92f276c5fe08da184ff9d455d1be421913b8ad732a7b65e858fb","glsl-optimizer/src/util/bitscan.h":"9e49e694e6b34fe035bc685f32588827eb8cbe7d82878963c7ab52843e1c16aa","glsl-optimizer/src/util/bitset.h":"c40f78515c6230fed18345c6751ce33833a49da7a27901c7e6d7340cbdcbc5e7","glsl-optimizer/src/util/blob.c":"8f729846f66efc9c15485cc5fc24c6ec861fc1fecb2f652573f2a237d481b791","glsl-optimizer/src/util/blob.h":"93e1eaac866b9a7cd6fc03b533c18fb2edf0e97f03395eff4f3a605c4fc14d0c","glsl-optimizer/src/util/compiler.h":"79e3bf40a5bab704e6c949f23a1352759607bb57d80e5d8df2ef159755f10b68","glsl-optimizer/src/util/crc32.c":"2f3467a046b3a76784ecb9aa55d527698c8607fd0b12c622f6691aaa77b58505","glsl-optimizer/src/util/crc32.h":"59bd81865e51042b73a86f8fb117c312418df095fed2d828c5c1d1c8b6fc6cd4","glsl-optimizer/src/util/debug.c":"c3d68e9752ccc19e66c669562cd113cf1d0ac83cbb30174789e7fb8d1df58f9c","glsl-optimizer/src/util/debug.h":"50068d745c4199ccbd33d68dd4c8a36d2b5179c7869a21e75906ddd0718ca456","glsl-optimizer/src/util/detect_os.h":"343a8790d17a3710c6dd015ee367f84e3902ff3f2e36faca2bf93f9d725d3574","glsl-optimizer/src/util/disk_cache.c":"f533937e5a4fffe76e2739ef4b6b1e1da097d96d63eb808e68ebbc7027641c23","glsl-optimizer/src/util/disk_cache.h":"e83314fb14134a8e079b15e470a6376ba5a8253701f048c890a62b7e55d64bc8","glsl-optimizer/src/util/fast_urem_by_const.h":"e108fce804616c47d071dfe4a04163eec1126e448ed1aa89abb6b3a6d772bd5b","glsl-optimizer/src/util/fnv1a.h":"ab2596f19c6adf431ae27618f62c5743e24ad23ef83bb359a4c4c218245ab459","glsl-optimizer/src/util/format/u_format.h":"4cdfc0c59cbc99a092e5ec5a396910f2d93b9643e5d8141050b011e66f11e45b","glsl-optimizer/src/util/futex.h":"26f7c9d86e9ffef4c0fa2761f1aaa1918337302e20bd6ca10e61dc3c47356deb","glsl-optimizer/src/util/half_float.c":"11bc2584493d5d9d46e8c8a619a0307cf150bf5ab5d0f96bb764b061dc37a00e","glsl-optimizer/src/util/half_float.h":"7f7c380f126da1400a91758cc0392f24bf967bce1672890b62be26fe9fbd922b","glsl-optimizer/src/util/hash_table.c":"0ca40352e35dedab0a84c64c903f1b16d47e950bb5f43b4d22bb57d499bfea6e","glsl-optimizer/src/util/hash_table.h":"217191bb360592e2232f187473c10287d2cda8ae6fa5c53d0ef74c8c206118b4","glsl-optimizer/src/util/list.h":"9fab03c6a78186bb5f173269f825f6ce976b409d931852e3d93bac632e07989a","glsl-optimizer/src/util/macros.h":"63faf65b51058c483b17f1f77da51d1c53c8beab52678cb6bd01f1228a63b6b0","glsl-optimizer/src/util/mesa-sha1.c":"00c692ec353ebc02c06c57c5a71de0ab7a119f86a4146f452e65ec87e4944417","glsl-optimizer/src/util/mesa-sha1.h":"bff4c29f4bf7cdbcefb30fa0c996a7604a380eba8976467c2a60e7cd328f7e26","glsl-optimizer/src/util/mesa-sha1_test.c":"25da89a59d51469f77b4c468ca23ffdce0a7a1166a70b6cc23026a6800b0143c","glsl-optimizer/src/util/os_memory.h":"64555faf1760ae6954f42c83727c38dfc4c278e9152115779ffaad58b42adacf","glsl-optimizer/src/util/os_memory_aligned.h":"12d86fa94be38c13f7eeebdf313795e1267dd5a7187d2f0072e0e896f41702f6","glsl-optimizer/src/util/os_memory_stdc.h":"07360363b88c927065e10df71bebf6c8a0cc3b9167c9dfce55f2d65f11e6f787","glsl-optimizer/src/util/os_misc.c":"a9936e613ec84803abd59ad47c192c8e3939993c950ac91973fdc4cec1801bb8","glsl-optimizer/src/util/os_misc.h":"cc68eb12e05b5e749c54298cb4a6f4cd20cc5af7db3403e70b3c27b56090c740","glsl-optimizer/src/util/os_time.h":"73e775f7335244ff5964c678c27eedf1aea6abea44c4169d327ea8c7ce4a3a88","glsl-optimizer/src/util/ralloc.c":"4b51189595ef67bcef52c40cbf654d969041dbd15e15d4a893ad494ac060aeca","glsl-optimizer/src/util/ralloc.h":"e573c45875ff1530f0dbee9a93ae55535fdac8d5cc88a79ebc327c688824bde5","glsl-optimizer/src/util/rounding.h":"0450722353caf83de07e67f335949dbe95fe53b534052d4ee9d28d2781387614","glsl-optimizer/src/util/set.c":"86f8c9a830bead5a5a79bc970b0ff97809312af07b3beb39ef9d90af04d40a1b","glsl-optimizer/src/util/set.h":"3e39ca161e7ed4ec7c436cc9c7919ed9a55ed1b71edbf2caf6f9bcfd9bc578ed","glsl-optimizer/src/util/sha1/README":"00af7419af05247081858acb2902efd99fcda2ce16e331079f701645bb3729c0","glsl-optimizer/src/util/sha1/sha1.c":"1403bbe0aad42ba3e6be7e09f7cad87a6a8c4ad5b63962f7b92b9f37d8133b04","glsl-optimizer/src/util/sha1/sha1.h":"68d9f240eab2918026ecdf22be36811abbd4f1389f6c36e31258041aeaedd247","glsl-optimizer/src/util/simple_mtx.h":"12c6c3c4b7db9168bc656d5b3c65912075084d2b388c415d5c3d3f5953a9d6c7","glsl-optimizer/src/util/softfloat.c":"a97e51a96fe5e6a052c02aa6bbec683fe73fb88a8c087d9c930503e2120d8a2e","glsl-optimizer/src/util/softfloat.h":"66664b0250e83bf5dd4cc743acd119d076efcea624a0eab3d6b60718e6ee8811","glsl-optimizer/src/util/string_buffer.c":"63a1d1b1e34926c88ea00159cafbcd56568b805c4f64d1e8c97169fe313921fc","glsl-optimizer/src/util/string_buffer.h":"7b88d1b1d9c6cfb8e93331813535c127289437c75f822029e9a3bca8ea6b52ee","glsl-optimizer/src/util/strndup.h":"0273c4fdb7482cd7746881a63d3998648c6d63415ba85af1d1860f0e0dc504c6","glsl-optimizer/src/util/strtod.c":"5cf610d8a37373cf37cfb7aae903525d943b2674b1f32594c70b0eb19a8c9697","glsl-optimizer/src/util/strtod.h":"237396def4e264d35ed4bedea00ef9a4ceab6d7a11a18c770d9747d22c69ed2d","glsl-optimizer/src/util/u_atomic.h":"c02e809526c6c09ba8fe51f50b2490d1b6c8e5c7f3c4031ae958250d098fc3bb","glsl-optimizer/src/util/u_debug.c":"8c060e379b816618f3dd22c9ea523c68b9425c76c36a7dfe5d6d375b337f5f4a","glsl-optimizer/src/util/u_debug.h":"e11e26edd9b9e4e6f8e6a435e69f4d9edda27e9a379f68f4c82ea2525aaaea68","glsl-optimizer/src/util/u_dynarray.h":"853d0fa6ff2261614488be624deb8a2b01e57c2c8eabc28578cbeed4ccc95694","glsl-optimizer/src/util/u_endian.h":"420a4320adfc37f89cfbf761f289651600b773468f2f881a1f7e9afa377987f5","glsl-optimizer/src/util/u_math.c":"c868a8c0886dc78f1b06b13404ba8b253090449045774dd56893ac9d75795184","glsl-optimizer/src/util/u_math.h":"4f334f6cd005b5703e41fa145f761f882b7f3a15e61c3234773af4f4adde1036","glsl-optimizer/src/util/u_memory.h":"c5db17c724c70283ddbe04165722f6988d4e0eb9aa3602ae472feff016649af9","glsl-optimizer/src/util/u_queue.h":"92930ce236c0528a98b695f5cea8c5c6aa9683beaf71a2227bdc5d33d1b21506","glsl-optimizer/src/util/u_string.h":"c5a2f4ef576d1547bda12c4ea219179fefa54414977743ac094abcaf696ef6ca","glsl-optimizer/src/util/u_thread.h":"00b708459b27f9910d18db92c18cc65cfc618ac2b3cd144e45f8640057b10d58","glsl-optimizer/src/util/xxhash.h":"2f2aff2fc6c0c929f52cf6ae7314122124c5be026d41ad1c357608383c4a37ad","src/bindings.rs":"79993db2058bde39f99ef483d02560d33b1cb882f6a552319e8b86eb6f9021e1","src/lib.rs":"04be1554cd829eb40864b06d80b491dd48117a4e3a601c7d482117f7a0391e67","wrapper.hpp":"f3ea34cc496f7d90b9bfcada3250b37b314c3524dac693b2ece9517bc7d274ac"},"package":"8ba4741358604ca0848c27ecc069d68e62e11cde81e38aac1da3c54b79ab5adf"}
|
|
diff --git a/third_party/rust/glslopt/Cargo.toml b/third_party/rust/glslopt/Cargo.toml
|
|
index a5a4b99..5a2fca4 100644
|
|
--- a/third_party/rust/glslopt/Cargo.toml
|
|
+++ b/third_party/rust/glslopt/Cargo.toml
|
|
@@ -9,6 +9,11 @@
|
|
# will likely look very different (and much more reasonable).
|
|
# See Cargo.toml.orig for the original contents.
|
|
|
|
+bin = []
|
|
+example = []
|
|
+test = []
|
|
+bench = []
|
|
+
|
|
[package]
|
|
edition = "2018"
|
|
name = "glslopt"
|
|
@@ -36,5 +41,5 @@ repository = "https://github.com/jamienicol/glslopt-rs"
|
|
name = "glslopt"
|
|
path = "src/lib.rs"
|
|
|
|
-[build-dependencies.cc]
|
|
-version = "1.0"
|
|
+[build-dependencies]
|
|
+cc = "1.0"
|
|
diff --git a/third_party/rust/glslopt/Cargo.toml.orig b/third_party/rust/glslopt/Cargo.toml.orig
|
|
index 452381f..a5a4b99 100644
|
|
--- a/third_party/rust/glslopt/Cargo.toml.orig
|
|
+++ b/third_party/rust/glslopt/Cargo.toml.orig
|
|
@@ -1,12 +1,40 @@
|
|
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
|
|
+#
|
|
+# When uploading crates to the registry Cargo will automatically
|
|
+# "normalize" Cargo.toml files for maximal compatibility
|
|
+# with all versions of Cargo and also rewrite `path` dependencies
|
|
+# to registry (e.g., crates.io) dependencies.
|
|
+#
|
|
+# If you are reading this file be aware that the original Cargo.toml
|
|
+# will likely look very different (and much more reasonable).
|
|
+# See Cargo.toml.orig for the original contents.
|
|
+
|
|
[package]
|
|
+edition = "2018"
|
|
name = "glslopt"
|
|
version = "0.1.12"
|
|
authors = ["Jamie Nicol <jnicol@mozilla.com>"]
|
|
-edition = "2018"
|
|
-license = "MIT"
|
|
+build = "build.rs"
|
|
+autolib = false
|
|
+autobins = false
|
|
+autoexamples = false
|
|
+autotests = false
|
|
+autobenches = false
|
|
description = "Optimizes GLSL shader code"
|
|
-keywords = ["opengl", "gl", "gles", "glsl", "shader"]
|
|
+readme = "README.md"
|
|
+keywords = [
|
|
+ "opengl",
|
|
+ "gl",
|
|
+ "gles",
|
|
+ "glsl",
|
|
+ "shader",
|
|
+]
|
|
+license = "MIT"
|
|
repository = "https://github.com/jamienicol/glslopt-rs"
|
|
|
|
-[build-dependencies]
|
|
-cc = "1.0"
|
|
+[lib]
|
|
+name = "glslopt"
|
|
+path = "src/lib.rs"
|
|
+
|
|
+[build-dependencies.cc]
|
|
+version = "1.0"
|
|
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/builtin_functions.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/builtin_functions.cpp
|
|
index 3dafcf0..cc6fe4b 100644
|
|
--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/builtin_functions.cpp
|
|
+++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/builtin_functions.cpp
|
|
@@ -735,7 +735,7 @@ fp64(const _mesa_glsl_parse_state *state)
|
|
}
|
|
|
|
static bool
|
|
-int64(const _mesa_glsl_parse_state *state)
|
|
+int64_(const _mesa_glsl_parse_state *state)
|
|
{
|
|
return state->has_int64();
|
|
}
|
|
@@ -1617,10 +1617,10 @@ builtin_builder::create_builtins()
|
|
_##NAME(fp64, glsl_type::dvec2_type), \
|
|
_##NAME(fp64, glsl_type::dvec3_type), \
|
|
_##NAME(fp64, glsl_type::dvec4_type), \
|
|
- _##NAME(int64, glsl_type::int64_t_type), \
|
|
- _##NAME(int64, glsl_type::i64vec2_type), \
|
|
- _##NAME(int64, glsl_type::i64vec3_type), \
|
|
- _##NAME(int64, glsl_type::i64vec4_type), \
|
|
+ _##NAME(int64_, glsl_type::int64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec2_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec3_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec4_type), \
|
|
NULL);
|
|
|
|
#define FIUD_VEC(NAME) \
|
|
@@ -1639,14 +1639,14 @@ builtin_builder::create_builtins()
|
|
_##NAME(fp64, glsl_type::dvec2_type), \
|
|
_##NAME(fp64, glsl_type::dvec3_type), \
|
|
_##NAME(fp64, glsl_type::dvec4_type), \
|
|
- _##NAME(int64, glsl_type::int64_t_type), \
|
|
- _##NAME(int64, glsl_type::i64vec2_type), \
|
|
- _##NAME(int64, glsl_type::i64vec3_type), \
|
|
- _##NAME(int64, glsl_type::i64vec4_type), \
|
|
- _##NAME(int64, glsl_type::uint64_t_type), \
|
|
- _##NAME(int64, glsl_type::u64vec2_type), \
|
|
- _##NAME(int64, glsl_type::u64vec3_type), \
|
|
- _##NAME(int64, glsl_type::u64vec4_type), \
|
|
+ _##NAME(int64_, glsl_type::int64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec2_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec3_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec4_type), \
|
|
+ _##NAME(int64_, glsl_type::uint64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec2_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec3_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec4_type), \
|
|
NULL);
|
|
|
|
#define IU(NAME) \
|
|
@@ -1683,14 +1683,14 @@ builtin_builder::create_builtins()
|
|
_##NAME(fp64, glsl_type::dvec2_type), \
|
|
_##NAME(fp64, glsl_type::dvec3_type), \
|
|
_##NAME(fp64, glsl_type::dvec4_type), \
|
|
- _##NAME(int64, glsl_type::int64_t_type), \
|
|
- _##NAME(int64, glsl_type::i64vec2_type), \
|
|
- _##NAME(int64, glsl_type::i64vec3_type), \
|
|
- _##NAME(int64, glsl_type::i64vec4_type), \
|
|
- _##NAME(int64, glsl_type::uint64_t_type), \
|
|
- _##NAME(int64, glsl_type::u64vec2_type), \
|
|
- _##NAME(int64, glsl_type::u64vec3_type), \
|
|
- _##NAME(int64, glsl_type::u64vec4_type), \
|
|
+ _##NAME(int64_, glsl_type::int64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec2_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec3_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec4_type), \
|
|
+ _##NAME(int64_, glsl_type::uint64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec2_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec3_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec4_type), \
|
|
NULL);
|
|
|
|
#define FIUD2_MIXED(NAME) \
|
|
@@ -1730,20 +1730,20 @@ builtin_builder::create_builtins()
|
|
_##NAME(fp64, glsl_type::dvec3_type, glsl_type::dvec3_type), \
|
|
_##NAME(fp64, glsl_type::dvec4_type, glsl_type::dvec4_type), \
|
|
\
|
|
- _##NAME(int64, glsl_type::int64_t_type, glsl_type::int64_t_type), \
|
|
- _##NAME(int64, glsl_type::i64vec2_type, glsl_type::int64_t_type), \
|
|
- _##NAME(int64, glsl_type::i64vec3_type, glsl_type::int64_t_type), \
|
|
- _##NAME(int64, glsl_type::i64vec4_type, glsl_type::int64_t_type), \
|
|
- _##NAME(int64, glsl_type::i64vec2_type, glsl_type::i64vec2_type), \
|
|
- _##NAME(int64, glsl_type::i64vec3_type, glsl_type::i64vec3_type), \
|
|
- _##NAME(int64, glsl_type::i64vec4_type, glsl_type::i64vec4_type), \
|
|
- _##NAME(int64, glsl_type::uint64_t_type, glsl_type::uint64_t_type), \
|
|
- _##NAME(int64, glsl_type::u64vec2_type, glsl_type::uint64_t_type), \
|
|
- _##NAME(int64, glsl_type::u64vec3_type, glsl_type::uint64_t_type), \
|
|
- _##NAME(int64, glsl_type::u64vec4_type, glsl_type::uint64_t_type), \
|
|
- _##NAME(int64, glsl_type::u64vec2_type, glsl_type::u64vec2_type), \
|
|
- _##NAME(int64, glsl_type::u64vec3_type, glsl_type::u64vec3_type), \
|
|
- _##NAME(int64, glsl_type::u64vec4_type, glsl_type::u64vec4_type), \
|
|
+ _##NAME(int64_, glsl_type::int64_t_type, glsl_type::int64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec2_type, glsl_type::int64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec3_type, glsl_type::int64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec4_type, glsl_type::int64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec2_type, glsl_type::i64vec2_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec3_type, glsl_type::i64vec3_type), \
|
|
+ _##NAME(int64_, glsl_type::i64vec4_type, glsl_type::i64vec4_type), \
|
|
+ _##NAME(int64_, glsl_type::uint64_t_type, glsl_type::uint64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec2_type, glsl_type::uint64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec3_type, glsl_type::uint64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec4_type, glsl_type::uint64_t_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec2_type, glsl_type::u64vec2_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec3_type, glsl_type::u64vec3_type), \
|
|
+ _##NAME(int64_, glsl_type::u64vec4_type, glsl_type::u64vec4_type), \
|
|
NULL);
|
|
|
|
F(radians)
|
|
@@ -1865,15 +1865,15 @@ builtin_builder::create_builtins()
|
|
_mix_sel(shader_integer_mix, glsl_type::bvec3_type, glsl_type::bvec3_type),
|
|
_mix_sel(shader_integer_mix, glsl_type::bvec4_type, glsl_type::bvec4_type),
|
|
|
|
- _mix_sel(int64, glsl_type::int64_t_type, glsl_type::bool_type),
|
|
- _mix_sel(int64, glsl_type::i64vec2_type, glsl_type::bvec2_type),
|
|
- _mix_sel(int64, glsl_type::i64vec3_type, glsl_type::bvec3_type),
|
|
- _mix_sel(int64, glsl_type::i64vec4_type, glsl_type::bvec4_type),
|
|
+ _mix_sel(int64_, glsl_type::int64_t_type, glsl_type::bool_type),
|
|
+ _mix_sel(int64_, glsl_type::i64vec2_type, glsl_type::bvec2_type),
|
|
+ _mix_sel(int64_, glsl_type::i64vec3_type, glsl_type::bvec3_type),
|
|
+ _mix_sel(int64_, glsl_type::i64vec4_type, glsl_type::bvec4_type),
|
|
|
|
- _mix_sel(int64, glsl_type::uint64_t_type, glsl_type::bool_type),
|
|
- _mix_sel(int64, glsl_type::u64vec2_type, glsl_type::bvec2_type),
|
|
- _mix_sel(int64, glsl_type::u64vec3_type, glsl_type::bvec3_type),
|
|
- _mix_sel(int64, glsl_type::u64vec4_type, glsl_type::bvec4_type),
|
|
+ _mix_sel(int64_, glsl_type::uint64_t_type, glsl_type::bool_type),
|
|
+ _mix_sel(int64_, glsl_type::u64vec2_type, glsl_type::bvec2_type),
|
|
+ _mix_sel(int64_, glsl_type::u64vec3_type, glsl_type::bvec3_type),
|
|
+ _mix_sel(int64_, glsl_type::u64vec4_type, glsl_type::bvec4_type),
|
|
NULL);
|
|
|
|
add_function("step",
|
|
@@ -1973,10 +1973,10 @@ builtin_builder::create_builtins()
|
|
add_function("packDouble2x32", _packDouble2x32(fp64), NULL);
|
|
add_function("unpackDouble2x32", _unpackDouble2x32(fp64), NULL);
|
|
|
|
- add_function("packInt2x32", _packInt2x32(int64), NULL);
|
|
- add_function("unpackInt2x32", _unpackInt2x32(int64), NULL);
|
|
- add_function("packUint2x32", _packUint2x32(int64), NULL);
|
|
- add_function("unpackUint2x32", _unpackUint2x32(int64), NULL);
|
|
+ add_function("packInt2x32", _packInt2x32(int64_), NULL);
|
|
+ add_function("unpackInt2x32", _unpackInt2x32(int64_), NULL);
|
|
+ add_function("packUint2x32", _packUint2x32(int64_), NULL);
|
|
+ add_function("unpackUint2x32", _unpackUint2x32(int64_), NULL);
|
|
|
|
FD(length)
|
|
FD(distance)
|
|
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/util/u_endian.h b/third_party/rust/glslopt/glsl-optimizer/src/util/u_endian.h
|
|
index 6bbae3c..d1540e9 100644
|
|
--- a/third_party/rust/glslopt/glsl-optimizer/src/util/u_endian.h
|
|
+++ b/third_party/rust/glslopt/glsl-optimizer/src/util/u_endian.h
|
|
@@ -27,7 +27,7 @@
|
|
#ifndef U_ENDIAN_H
|
|
#define U_ENDIAN_H
|
|
|
|
-#ifdef HAVE_ENDIAN_H
|
|
+#if defined(HAVE_ENDIAN_H) || defined(__HAIKU__)
|
|
#include <endian.h>
|
|
|
|
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/util/u_math.h b/third_party/rust/glslopt/glsl-optimizer/src/util/u_math.h
|
|
index 42d9e34..240bd41 100644
|
|
--- a/third_party/rust/glslopt/glsl-optimizer/src/util/u_math.h
|
|
+++ b/third_party/rust/glslopt/glsl-optimizer/src/util/u_math.h
|
|
@@ -676,6 +676,9 @@ util_memcpy_cpu_to_le32(void * restrict dest, const void * restrict src, size_t
|
|
#define MAX4( A, B, C, D ) ((A) > (B) ? MAX3(A, C, D) : MAX3(B, C, D))
|
|
|
|
|
|
+#ifdef __HAIKU__
|
|
+#undef ALIGN
|
|
+#endif
|
|
/**
|
|
* Align a value up to an alignment value
|
|
*
|
|
diff --git a/third_party/rust/iana-time-zone-haiku/.cargo-checksum.json b/third_party/rust/iana-time-zone-haiku/.cargo-checksum.json
|
|
index 09e7a26..23acc55 100644
|
|
--- a/third_party/rust/iana-time-zone-haiku/.cargo-checksum.json
|
|
+++ b/third_party/rust/iana-time-zone-haiku/.cargo-checksum.json
|
|
@@ -1 +1 @@
|
|
-{"files":{".cargo_vcs_info.json":"e35aa42766bae2002cba8470471a6d73c1916a4b33cf5f99930927ece3ee28d4","Cargo.toml":"8f06eca1c0e108d0422687eeb87030520ae7bd956efc92352599cc9cf079d9a3","Cargo.toml.orig":"4257cf4466c8db10eea012268e3633c483884992885286f906056c4085f192f5","LICENSE-APACHE":"696759d65dfe558ff7d9f031c76db19ec5c0767470fb67c4e8d990820d1e99c9","LICENSE-MIT":"da28ccc6b158fc2d8cccc74e99794b1cff1d29bd7bbeb019442fcf0c04c6cad9","README.md":"5b1ad9309b716374cc1bdcd025f525fac31b2f413e6c4d311e207fa6b1f96a83","build.rs":"10304831100a60c1c2b990762dcfeb47dae8342cf9b54595bec94884e7de5784","src/implementation.cc":"66d2ecfe58ec543e27a6fb3a96526a07cd1ac43a2370344f856529e5a112ce0f","src/lib.rs":"e58db019554bd372f0a187f8f51f96624cdf21bcef507de2093e1d49ca0787cd"},"package":"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"}
|
|
\ No newline at end of file
|
|
+{"files":{".cargo_vcs_info.json":"e35aa42766bae2002cba8470471a6d73c1916a4b33cf5f99930927ece3ee28d4","Cargo.toml":"8f06eca1c0e108d0422687eeb87030520ae7bd956efc92352599cc9cf079d9a3","Cargo.toml.orig":"4257cf4466c8db10eea012268e3633c483884992885286f906056c4085f192f5","LICENSE-APACHE":"696759d65dfe558ff7d9f031c76db19ec5c0767470fb67c4e8d990820d1e99c9","LICENSE-MIT":"da28ccc6b158fc2d8cccc74e99794b1cff1d29bd7bbeb019442fcf0c04c6cad9","README.md":"5b1ad9309b716374cc1bdcd025f525fac31b2f413e6c4d311e207fa6b1f96a83","build.rs":"10304831100a60c1c2b990762dcfeb47dae8342cf9b54595bec94884e7de5784","src/implementation.cc":"2f0381747eba552ef428de04fcdfa55993daff9abe94b016db074032cd5ad460","src/lib.rs":"e58db019554bd372f0a187f8f51f96624cdf21bcef507de2093e1d49ca0787cd"},"package":"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"}
|
|
diff --git a/third_party/rust/iana-time-zone-haiku/src/implementation.cc b/third_party/rust/iana-time-zone-haiku/src/implementation.cc
|
|
index d1c92cd..e08b159 100644
|
|
--- a/third_party/rust/iana-time-zone-haiku/src/implementation.cc
|
|
+++ b/third_party/rust/iana-time-zone-haiku/src/implementation.cc
|
|
@@ -4,56 +4,54 @@
|
|
|
|
#include <cstring>
|
|
|
|
+#pragma GCC visibility push(default)
|
|
#include <Errors.h>
|
|
#include <LocaleRoster.h>
|
|
#include <String.h>
|
|
#include <TimeZone.h>
|
|
+#pragma GCC visibility pop
|
|
|
|
extern "C" {
|
|
|
|
size_t iana_time_zone_haiku_get_tz(char *buf, size_t buf_size) {
|
|
- try {
|
|
- static_assert(sizeof(char) == sizeof(uint8_t), "Illegal char size");
|
|
-
|
|
- if (buf_size == 0) {
|
|
- return 0;
|
|
- }
|
|
-
|
|
- // `BLocaleRoster::Default()` returns a reference to a statically allocated object.
|
|
- // https://github.com/haiku/haiku/blob/8f16317/src/kits/locale/LocaleRoster.cpp#L143-L147
|
|
- BLocaleRoster *locale_roster(BLocaleRoster::Default());
|
|
- if (!locale_roster) {
|
|
- return 0;
|
|
- }
|
|
-
|
|
- BTimeZone tz(NULL, NULL);
|
|
- if (locale_roster->GetDefaultTimeZone(&tz) != B_OK) {
|
|
- return 0;
|
|
- }
|
|
-
|
|
- BString bname(tz.ID());
|
|
- int32_t ilength(bname.Length());
|
|
- if (ilength <= 0) {
|
|
- return 0;
|
|
- }
|
|
-
|
|
- size_t length(ilength);
|
|
- if (length > buf_size) {
|
|
- return 0;
|
|
- }
|
|
-
|
|
- // BString::String() returns a borrowed string.
|
|
- // https://www.haiku-os.org/docs/api/classBString.html#ae4fe78b06c8e3310093b80305e14ba87
|
|
- const char *sname(bname.String());
|
|
- if (!sname) {
|
|
- return 0;
|
|
- }
|
|
-
|
|
- std::memcpy(buf, sname, length);
|
|
- return length;
|
|
- } catch (...) {
|
|
+ static_assert(sizeof(char) == sizeof(uint8_t), "Illegal char size");
|
|
+
|
|
+ if (buf_size == 0) {
|
|
return 0;
|
|
}
|
|
+
|
|
+ // `BLocaleRoster::Default()` returns a reference to a statically allocated object.
|
|
+ // https://github.com/haiku/haiku/blob/8f16317/src/kits/locale/LocaleRoster.cpp#L143-L147
|
|
+ BLocaleRoster *locale_roster(BLocaleRoster::Default());
|
|
+ if (!locale_roster) {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ BTimeZone tz(NULL, NULL);
|
|
+ if (locale_roster->GetDefaultTimeZone(&tz) != B_OK) {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ BString bname(tz.ID());
|
|
+ int32_t ilength(bname.Length());
|
|
+ if (ilength <= 0) {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ size_t length(ilength);
|
|
+ if (length > buf_size) {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ // BString::String() returns a borrowed string.
|
|
+ // https://www.haiku-os.org/docs/api/classBString.html#ae4fe78b06c8e3310093b80305e14ba87
|
|
+ const char *sname(bname.String());
|
|
+ if (!sname) {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ std::memcpy(buf, sname, length);
|
|
+ return length;
|
|
}
|
|
} // extern "C"
|
|
|
|
diff --git a/third_party/rust/lmdb-rkv-sys/.rustfmt.toml b/third_party/rust/lmdb-rkv-sys/.rustfmt.toml
|
|
new file mode 100644
|
|
index 0000000..fc441bb
|
|
--- /dev/null
|
|
+++ b/third_party/rust/lmdb-rkv-sys/.rustfmt.toml
|
|
@@ -0,0 +1,3 @@
|
|
+ignore = [
|
|
+ "src/bindings.rs"
|
|
+]
|
|
\ No newline at end of file
|
|
diff --git a/third_party/rust/mtu/.cargo-checksum.json b/third_party/rust/mtu/.cargo-checksum.json
|
|
index 442cabc..6536f3a 100644
|
|
--- a/third_party/rust/mtu/.cargo-checksum.json
|
|
+++ b/third_party/rust/mtu/.cargo-checksum.json
|
|
@@ -1 +1 @@
|
|
-{"files":{".clippy.toml":"6ab1a673bd5c7ba29bd77e62f42183db3ace327c23d446d5b4b0618f6c39d639","Cargo.toml":"4a6be4bf3e84f9f29a3f03a1b80d55a7cc6c6fad494275efb8dc8f44ad1689e4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"4ad721b5b6a3d39ca3e2202f403d897c4a1d42896486dd58963a81f8e64ef61d","README.md":"24df0e24154b7f0096570ad221aea02bd53a0f1124a2adafff5730af5443a65c","SECURITY.md":"75455814b6cf997e22a927eb979b4356d788583aa1eb96e90853aaab0f82ad1b","build.rs":"a4bcd0562c80914a8e909e8b10507605bfd6f0f268fad9ef4d79f4c48bdaed6c","src/bin/mtu-lookup.rs":"9ff9ae9873d1f6faeacf45d8ab5924d3ec680a9c51976538aa15bbe304a228c6","src/bsd.rs":"8f9a16fe7741853e15f55f0755ac53fe0374c664f24e4fadb460dd77d734ea62","src/lib.rs":"b419420d13472477e9c7557d7f65f692b32fa2b52f64a3e1d3003d21a8f93ef2","src/linux.rs":"f4bd05e05791fe1728c02a73d309ae1565111d5632cf0d402c20698d5ee4839b","src/routesocket.rs":"b4e27289bfc91ef9ea1ec29b2c5ff407bad49ff01391115e852f2133667de7aa","src/windows.rs":"086ae53c72d03e51366db09e11aedf92ae391ecc8143fcfe45b1a1af82cf035e"},"package":null}
|
|
\ No newline at end of file
|
|
+{"files":{".clippy.toml":"6ab1a673bd5c7ba29bd77e62f42183db3ace327c23d446d5b4b0618f6c39d639","Cargo.toml":"4a6be4bf3e84f9f29a3f03a1b80d55a7cc6c6fad494275efb8dc8f44ad1689e4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"4ad721b5b6a3d39ca3e2202f403d897c4a1d42896486dd58963a81f8e64ef61d","README.md":"24df0e24154b7f0096570ad221aea02bd53a0f1124a2adafff5730af5443a65c","SECURITY.md":"75455814b6cf997e22a927eb979b4356d788583aa1eb96e90853aaab0f82ad1b","build.rs":"2c51040e4db5d6cbe0cfcc3ed1121c628c254e88dbb1c00a27036ff8c1aa8f26","src/bin/mtu-lookup.rs":"9ff9ae9873d1f6faeacf45d8ab5924d3ec680a9c51976538aa15bbe304a228c6","src/bsd.rs":"8f9a16fe7741853e15f55f0755ac53fe0374c664f24e4fadb460dd77d734ea62","src/lib.rs":"782b93868afffed3a3b35bf1a4cd6229213dc37979621a0346518ecb929a3989","src/linux.rs":"f4bd05e05791fe1728c02a73d309ae1565111d5632cf0d402c20698d5ee4839b","src/routesocket.rs":"b4e27289bfc91ef9ea1ec29b2c5ff407bad49ff01391115e852f2133667de7aa","src/windows.rs":"086ae53c72d03e51366db09e11aedf92ae391ecc8143fcfe45b1a1af82cf035e"},"package":null}
|
|
diff --git a/third_party/rust/mtu/build.rs b/third_party/rust/mtu/build.rs
|
|
index a649819..14dbb00 100644
|
|
--- a/third_party/rust/mtu/build.rs
|
|
+++ b/third_party/rust/mtu/build.rs
|
|
@@ -40,14 +40,14 @@ fn bindgen() {
|
|
// Platforms currently not supported.
|
|
//
|
|
// See <https://github.com/mozilla/mtu/issues/82>.
|
|
- if matches!(target_os.as_str(), "ios" | "tvos" | "visionos") {
|
|
+ if matches!(target_os.as_str(), "ios" | "tvos" | "visionos" | "haiku") {
|
|
return;
|
|
}
|
|
|
|
if target_os == "windows" {
|
|
return;
|
|
}
|
|
-
|
|
+
|
|
let bindings = if matches!(target_os.as_str(), "linux" | "android") {
|
|
bindgen::Builder::default()
|
|
.header_contents("rtnetlink.h", "#include <linux/rtnetlink.h>")
|
|
diff --git a/third_party/rust/mtu/src/lib.rs b/third_party/rust/mtu/src/lib.rs
|
|
index 215f620..9b7f9a2 100644
|
|
--- a/third_party/rust/mtu/src/lib.rs
|
|
+++ b/third_party/rust/mtu/src/lib.rs
|
|
@@ -110,7 +110,7 @@ const fn aligned_by(size: usize, align: usize) -> usize {
|
|
// Platforms currently not supported.
|
|
//
|
|
// See <https://github.com/mozilla/mtu/issues/82>.
|
|
-#[cfg(any(target_os = "ios", target_os = "tvos", target_os = "visionos"))]
|
|
+#[cfg(any(target_os = "ios", target_os = "tvos", target_os = "visionos", target_os = "haiku"))]
|
|
pub fn interface_and_mtu_impl(remote: IpAddr) -> Result<(String, usize)> {
|
|
return Err(default_err());
|
|
}
|
|
diff --git a/third_party/rust/naga/.cargo-checksum.json b/third_party/rust/naga/.cargo-checksum.json
|
|
index 174a061..8d40435 100644
|
|
--- a/third_party/rust/naga/.cargo-checksum.json
|
|
+++ b/third_party/rust/naga/.cargo-checksum.json
|
|
@@ -1 +1 @@
|
|
-{"files":{".cargo/config.toml":"7248ed3bed246d755d7bf9e5d7842d74b5c270ba6c29ad907872b55a67707ee0","CHANGELOG.md":"e60105d413f857e37dae165f819c47491d0a595183d3c9146b259d811b98b14f","Cargo.toml":"501a46717ffddc4d586ebd04524a77b55281be68b9a35d108cf48c133e6e0e6b","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"5f2e894ebee3fabf280690ac67117d500824b69036a50ab63d09b84100377b3a","build.rs":"e9098f486e87d91710c07d40f1b32716e5debfe94a0b5e53e37075b0ee997eec","src/arena/handle.rs":"897b2b0eebe0d9ae6a65bf2e8c210c8391924da06ef4c9e2a1225ad622400b6c","src/arena/handle_set.rs":"5c2a0bcf41d85c8173ac68b2d439552e79d0c3c0fe1ff3b1e1a48f0c83a4d48f","src/arena/handlevec.rs":"208d99644f9a6b6c1e88bbf9b280b01c62ce5bc8243727b31bafc3cc296d71c9","src/arena/mod.rs":"e7b574f5c592e3c32bae4a6e08b065ba1a9766740c9c85649e99b6dbdb790843","src/arena/range.rs":"0041168cee4c25d6b5bd4ba5cd42e138383f6a845e95ead3689bd3dd85c8b55c","src/arena/unique_arena.rs":"0e2d1c372a7c40b77793dc413b8920e86459e4656775a010f32974b4ad67a7fd","src/back/continue_forward.rs":"8194d238763caa6d5601ec3af56ba39a471c39945f43152b58d582092c99aefa","src/back/dot/mod.rs":"ec559c1cf6f3c92c75af639c7150c48862fff04965ec6b3f30e20e3a41c7c772","src/back/glsl/conv.rs":"86f03b46c66c907d3561508fd1c6c05c05d21d957d64d14631ac6ce9eeb36277","src/back/glsl/features.rs":"6ec0267f1ee47195d99fe849f291358efee00a7d035b964d9aeff8652c1700c4","src/back/glsl/keywords.rs":"fee8ed132e44bace54869a7c169a1ab7ed55db1bf590b4b1bce9efa4552e1dd7","src/back/glsl/mod.rs":"2486447c7cc9462d2407d55015d7f92249e148ff77c6a69b7b9a4623fb06742d","src/back/glsl/writer.rs":"a703268ac13b598842a16b4c641043921fd6205b33c395b3a17d35819d820ba1","src/back/hlsl/conv.rs":"d1a28aefba71eda7cb4533deeca16d65cb8a0a2a6f3210fdec3c4ab4fbe3c1d4","src/back/hlsl/help.rs":"12ddb9d08fe64eb34b66ae2166edffce5106a04ccef0b8cc0391a6fafd676270","src/back/hlsl/keywords.rs":"35285ad56319ba8c8ba86064d71e7cdba82303ecfe4cfda97fb983a53c17a14b","src/back/hlsl/mod.rs":"032cbf74d7bd488e7fc44e83c98c0dd6132f2edb945e68bf8fd2cbbfe51d43e4","src/back/hlsl/ray.rs":"e3c9edc9b410af18ccf8bf717e4a33af20eefd15a404cdf460460236000dc8bd","src/back/hlsl/storage.rs":"5083d03b1f25fe767e45e0c507bd30424352fccd48484c081620712d3682aae8","src/back/hlsl/writer.rs":"091835f0e6f77ac5aa1092da91cd218ada31c9865ab3bb6836204b609537110e","src/back/mod.rs":"6776b7d04e5c6ce89c020a35d2e8009a80b9468a12c06dc8f89674a33c043cf2","src/back/msl/keywords.rs":"bba3d9da01ef28ad71b4aebcdb0cd3a0c17f7ebbe6a75f5defad0ccf7d905a2d","src/back/msl/mod.rs":"813ed385e1a03a976b444542b21a3f3d689038169b8f164a92d9a4826f09b2ae","src/back/msl/sampler.rs":"173ffc391fae1b3008cea89d7bb2e183eeb182acd30a5bae80b1f0cf1af569f9","src/back/msl/writer.rs":"8624ad46a3e43693bb848e9c32650ee29a7668d4d1abb28b99d4719176620ae4","src/back/pipeline_constants.rs":"8a0ef8a03605007bf238b611fe0e626e0b84eb3714a6d354b6c6cc6817b589b9","src/back/spv/block.rs":"8038957c694aebac807b015ab960337adc8bca65d8d6b3d39cd44e81e305f989","src/back/spv/f16_polyfill.rs":"44ce07ef497dff13a9152eb9bc5936c486ef53de6d476da6b0a39396b0e6abdb","src/back/spv/helpers.rs":"d8f710a1ad34486fd6a69802c041db6453d06e94296f1829056d60107b10d130","src/back/spv/image.rs":"105b5f8286d6afaabbb6fd7a5f86380274bae4011f3ba28c4f860c3694678557","src/back/spv/index.rs":"cbc5b99f38fca8c5dd19a622a7b4b66907594532774958be28833f399c066168","src/back/spv/instructions.rs":"520e2c35d799e228a44758f5fb18b047dfa6701023e320447f30f003233d01b4","src/back/spv/layout.rs":"279b6da152a113781df2ce42c73bf8b2861f7affdfd8d48d5f35c810363831e7","src/back/spv/mesh_shader.rs":"8687c7e45557fa85d144a68fba5510431a2000cd10d31d36684a4ec908e6a967","src/back/spv/mod.rs":"655b9cb06175c7ccd455b62cc123a1cd8666627d23f48a4b37c527ab064ae14e","src/back/spv/ray/mod.rs":"bcd6fe9cd407c13d6eb76740217e49992e3479a8e327410b8d9688d2b0eea21c","src/back/spv/ray/query.rs":"e49a8d5be0a828f7b6f0dc076b57a37b402942ea0fc777130b550e80aff73ff0","src/back/spv/recyclable.rs":"8ea397d4d8d3f2cd5fbc8e0be94d136c2d6e0f0e8a4b5eb567dcc1be104c9ae5","src/back/spv/selection.rs":"4d8b695a9796ca2cb701ef3c4a52d8c0099c55818487f5163edd3c58e1610156","src/back/spv/subgroup.rs":"68fc3e3153022a0a8bddec20ad9221820678f02921878318e571d5aa2ca13cee","src/back/spv/writer.rs":"98cc96ec547bdd22ea507b608fdbbe33c93a72c5d296ffc2aec262bc9bd08947","src/back/wgsl/mod.rs":"1b04d66e8dba609513d43431d1f0ee9a209fbfd8453862d6e8a7aa41f8910997","src/back/wgsl/polyfill/inverse/inverse_2x2_f16.wgsl":"9e7635d04724822931c805a8b35e76d6d294d447e4ea8d57b308ce45609bf736","src/back/wgsl/polyfill/inverse/inverse_2x2_f32.wgsl":"340d491abde07f93996391796db65a5f88402663eaf6b9d2d894d11cb8cf8b6d","src/back/wgsl/polyfill/inverse/inverse_3x3_f16.wgsl":"4f13a1a4b3e1b51f0f992d13c55cf854a80917554a4d13c997819fa1fe776ba4","src/back/wgsl/polyfill/inverse/inverse_3x3_f32.wgsl":"9b16d2f4b9e433c8e03a0cb46ab48508f3bf7e185ce1b4e26106c47e81a677cb","src/back/wgsl/polyfill/inverse/inverse_4x4_f16.wgsl":"86d39d1db5d03995b404950279db7f1698ad9622982aa319fdedb7532673235b","src/back/wgsl/polyfill/inverse/inverse_4x4_f32.wgsl":"dc510525ac2dce66389a8c4bf8b2f31f0dedd9e6debdbe4ffd939a0a7fc533d3","src/back/wgsl/polyfill/mod.rs":"f4ab3c9b9cdc36d16dab00d0f7f07d6e6beda0e27a36053e9b5ffeeb7ca18edc","src/back/wgsl/writer.rs":"61a47a9d23cea6b370b5cc2a49f083c123284f915da5492ea9d614b47133842f","src/common/diagnostic_debug.rs":"8c73fe605e5b6162d0485e264287ac50c061cf581743feebbffe1474d1d3516d","src/common/diagnostic_display.rs":"46f1ff8a32179703ef0bcdb704db9f6e6e8b4eaad6cadf94577eeab3d8a16cd1","src/common/mod.rs":"0c979fd43068cfbceb7b29ff0bc578327e0770d5403c12f48d8605f77efbe200","src/common/predeclared.rs":"a5f42d55f2e13d8f5a8213d4a881e9155c3994c4054d43edcf7bd7bb7c868ccf","src/common/wgsl/diagnostics.rs":"4fec985b4c5cc6dfae4dd78bd7c850adc88a1761d7b6691de0355ea49300e532","src/common/wgsl/mod.rs":"d944915ff692c96aecca67737bccc2d5d9eb68f475166a2744f29a025f4a4c93","src/common/wgsl/to_wgsl.rs":"882e2404813fb494c9ae6b1c4461b8752b3469040f509dc8bb1d42da242e131a","src/common/wgsl/types.rs":"62da42d9d21f542b7aed9393303ba8c17feed49c4f82cb4a339fa0ac2bfacef0","src/compact/expressions.rs":"e2b4267ef76b75e452bc3b58c474b0a2960f0ffbec15788a79cc63eea14d73d6","src/compact/functions.rs":"b033cfe2212f1fd8170076a960c5793c2e62857603baa738ea5280e8880c0eac","src/compact/handle_set_map.rs":"b4688bff174487f2da4a1a946af07c80b6ba59f60dc84184c6a30039354209e8","src/compact/mod.rs":"25ef93ce732860a253d1cc2041016260737e2f4ae22d17f88f7f5265fdbbb03b","src/compact/statements.rs":"35ea07c549183d8c768bc4dd26dbe9b5c9b2b70ca9b57bc96f6611b7587c5112","src/compact/types.rs":"32abe0e0e0d55044685c5c0d20d1688970217f106270f2bd4a35aa0444a5bdfe","src/diagnostic_filter.rs":"5e3d14a774974148b7d2918617ba3e2c3a07493e0f90485a7de9db86e05a7cd0","src/error.rs":"8ea0b2b39800ec3af13e001df8eaea385f5c23ed41587daf66e545af213f4eec","src/front/atomic_upgrade.rs":"86ce9f9628d92a1a09802cb534bb4310236b83f2799c921b81c687f009c589be","src/front/glsl/ast.rs":"34fdd3d113b85d1f9cad8dc9ccdd944d1c5e88eae8f46b7088baa49e0307ef7b","src/front/glsl/builtins.rs":"ffe36464b5758dd8c917c3e9505d4027268e4b019174f0f95a229cd16d4cafa1","src/front/glsl/context.rs":"504c63d9aeef452b7dfbc1ad25bfbd5e51d3f514ad03818d1fa0a67924c2d2ec","src/front/glsl/error.rs":"f445297e0357919e2345ae15f2d23c58d36a64c9a666f1cf1b09cbcfd6e4627a","src/front/glsl/functions.rs":"4d779157163e354c31fddc635f6c93c8447293c5528311c0814503ff0d8afdfc","src/front/glsl/lex.rs":"24706628b600b5ce435cef464c84196ac5d58013122a97e7b59d509cc25f85a2","src/front/glsl/mod.rs":"132f2a60812b3910f65e6281562d4dc94efa329fd1eb0f2778ffe67631a35f78","src/front/glsl/offset.rs":"66bd524a2d17dc44f431430dcbbb74a771fdab43c9581e88bb1123e6cfec516b","src/front/glsl/parser.rs":"95426e630b3ef8a9581f90c0e98af6e18bd419803baad02ebee0451c64d0f25d","src/front/glsl/parser/declarations.rs":"311212375f0ba39ef77889acadd54b9909cc9d043e424c0b6c9db3220d68d03e","src/front/glsl/parser/expressions.rs":"828f11ed3227de315d5d1b14f6f84ce098f77af9e31ff3ceb4e4906121d932fd","src/front/glsl/parser/functions.rs":"302e24e06190aff555131c33f9a80b15df6a0390d6c776f888a44d5ef7df697e","src/front/glsl/parser/types.rs":"ee242048a65cd3709e16b70a3882e9296e615327480f2ad779e3d2523778181f","src/front/glsl/parser_tests.rs":"6834f0d595f4077266054e5da43e4f1b60e5c6780611ab0f530d9964cc62fad3","src/front/glsl/token.rs":"83780c0c1954ef216896c9d8a48e412b357783e00ccd4909a7a249935c742629","src/front/glsl/types.rs":"286395d82707a09d28b4c1a8bade917822478e53d8eb277ceec5fa9e71649ba2","src/front/glsl/variables.rs":"73db9f5364de14092c81b917c2ec0d4114a727d299e569be5b0cae94a0ecdd2e","src/front/interpolator.rs":"caf8c8c3ddca56fbece33cc18615c4d8c5b3b68112c9de22196d9dd49c84bf96","src/front/mod.rs":"fddd2be54ff44b52743ac8eb4a19e153a8a169af8e65d9061a9b9fc9857f64db","src/front/spv/convert.rs":"5bf4d8d02850c98d4d7fb05e60e1c0ed2cc765a3b675a3d034d64e3dcf17e1f6","src/front/spv/error.rs":"d08e1d65716ccc0f2a94a1285a1d034fa4840dc79ca60a5ec7481697bdec74d1","src/front/spv/function.rs":"22cd3d699eedfdcd44e2c28fe36a0374cf0915950172b47018b0862c8db3ee2c","src/front/spv/image.rs":"c39ffdb19a19861cec009de39431a879be99bdd4d9d08c0ecdef397c2f3f6fa5","src/front/spv/mod.rs":"64fb834905442b0455abf4b39b6924bdf2f3fcfb633d33600eae7cfb5c2c382b","src/front/spv/next_block.rs":"df7903c7de3b5f98fc3308868135ad65f5681f19a08c4c0cc0768735caf98dc8","src/front/spv/null.rs":"ee20287365e025e8bcc91f29df930ff8b63cb6d7f26db0b1789d54de614a7353","src/front/type_gen.rs":"111832af89a268ae3206d2ba2159b9b9d64224ed09375a29eec142725ea7fb34","src/front/wgsl/error.rs":"806c6312929cd599d6356eb5c2f33cabbd131c05d93d2893c5e82c39106a0be1","src/front/wgsl/index.rs":"476e5c4eddb14dfb53eee7976bcf4276c8a3fad81fbed92dc7b5dd31a5ab1593","src/front/wgsl/lower/construction.rs":"4462db904bf230c2fa7b32771933d826891aa41b08879aadd6097e396c66116c","src/front/wgsl/lower/conversion.rs":"f5f82649f91313dde91b2840aa399125c766340ec46a41bef6db33f00cafb7f6","src/front/wgsl/lower/mod.rs":"fa24bdfc69da05002a3a45295170d48768980129f00289f1994693d0ca6cf8ff","src/front/wgsl/lower/template_list.rs":"62ca31b4f3240c16f70caa3e78801a556da740010186e5c1f3723e3ef6f6c815","src/front/wgsl/mod.rs":"c115e0154a68b762d162ef3529060f23659b13f95f8e2d326f043015ff3baf06","src/front/wgsl/parse/ast.rs":"5765cb2046c9a33a19a47d0e1a96be4f35c28625e9b6ebd338fa11bd7ab1cca2","src/front/wgsl/parse/conv.rs":"c9f43e2137ce329a0af9ac7ddeae361b2e56f8216a5e3253915cc7b377bb3900","src/front/wgsl/parse/directive.rs":"c96f33cef2c1d8a374fe1b3827538f7db33d6b7811a6e0914d29de80b8963257","src/front/wgsl/parse/directive/enable_extension.rs":"094dd43ff667fba931cf5a0e1ef1cf22db64923cfbfdc1a9875832440c22a53a","src/front/wgsl/parse/directive/language_extension.rs":"1ddfd0331ece96eddbb07a971991dd6285bd58e0276d94a5c26bf30eab0ac5be","src/front/wgsl/parse/lexer.rs":"73a76177bfb7b0382b908517c5857a2eb5f7de30c0e4afdca3215a8179d32bdd","src/front/wgsl/parse/mod.rs":"4861d16dda7f4dd179e4381e72d8f9ea91c82b37c444fbb9124a7999db30d89d","src/front/wgsl/parse/number.rs":"7af92c71031e4c4258e9d8d323f7ee99a2fd4be3b6975ab9b8b53b95431845d9","src/front/wgsl/tests.rs":"c0bc29cc8cc786a0b589da267b99a9b5e0c0871f8326d84d3b563025860f77bc","src/ir/block.rs":"85bac7b476b48240ebfe3660a2b3e781752faa895f71f7e52393e75e0bd8dbb7","src/ir/mod.rs":"9d3921b1f4304f9912f3fa6c5ef6648be27179a955064f88ce33ba4f68e4f16d","src/keywords/mod.rs":"47a6fde012bf7d1e70f0fac7762f6a8e7dca6b9bbb99e2cada773c61527cfbfe","src/keywords/wgsl.rs":"2448982b88efc945cad1fca249e111f9e8cee7fdca110e13913960b012cc94b4","src/lib.rs":"1e40237435eebd4a91fd5c9b2e8a58664ebd1c40a0d27c0c5220047f0221704a","src/non_max_u32.rs":"b2d81efda0e1e5ace9e2fad990a7adf628f1dec63273b069c93d5423eb78350d","src/proc/constant_evaluator.rs":"bfa528f6f09f2c7b5a9bea0929ec373435987cd971f87ce7800b7cbdf63e7023","src/proc/emitter.rs":"76e264b4c0877fe30bf20135685a289b76001188a78d5ca5b88edae5bb29646b","src/proc/index.rs":"a356017af35132873944f45183de968f3ccb605d9b953365488d2cb80ae0cfba","src/proc/keyword_set.rs":"928414d2b79ee48735d532e03d3f0a58427c3f27a2a0c6938425749b00943784","src/proc/layouter.rs":"fc55708da27682b1977c6aaa8b04ae2756ed7359026ba55dbf127509d8b6c4f4","src/proc/mod.rs":"9b6ec7ed566215ce453c4b045f5aaa101a3d9d77199e314015bbba6e66b90a24","src/proc/namer.rs":"5df27ec6f930fcaa3c2eddf98342dffc088db1e403d09258a82f895bdde70c18","src/proc/overloads/any_overload_set.rs":"877cd637d979abc08caa021dabb9821a79fc9109eb97024a230bcfac82830388","src/proc/overloads/constructor_set.rs":"b702f866ac1472bcc075bd0bede450388123b5899431934fd60a29865498c68b","src/proc/overloads/list.rs":"0a4ff2a43e035da2cf4a321a15afaff676377838095e691d3e5447f8d9180ab7","src/proc/overloads/mathfunction.rs":"305716a575bed3ec456db583e65bd5a972f1448612b6f260b278ae0b79802540","src/proc/overloads/mod.rs":"0e96479cbd0ec9fa8200a5e88c16a22ee7ed2021ecf6f80a7e4ded69cad5239f","src/proc/overloads/one_bits_iter.rs":"6b98769fdec777d311248084f13958c5cca44659d0928603ece8618387ea58b2","src/proc/overloads/regular.rs":"73d64fab79019d589cb0595d0ef606fd6af732c42a418c60c81da4c96e113c89","src/proc/overloads/rule.rs":"b7f87d5ca0cffdaa8ee0db0110918f5a726359fd8a72bc638d8ce27a4b0ae3b2","src/proc/overloads/scalar_set.rs":"3729bc754dbf29a2337379ecb46568fdc3149a48074a354244da91e3d9cb5cef","src/proc/overloads/utils.rs":"d8f661579e917edb892b6a7e8babadbc0db1a110d74558b81b49b3331bd07a5e","src/proc/terminator.rs":"c0eed3f6ab3c392c6953fce47b7487d3a767a1299ec764711ed3bdcfbf1248f6","src/proc/type_methods.rs":"99498c3e300dfdd7c6414c7017e374c15d02e110a07d82242953a12eb30a3943","src/proc/typifier.rs":"2d9d1ec55b1c2d2f8f612cd3dbae8ff98e5d475b8292e3ddf60d3cf2966d0cab","src/racy_lock.rs":"c56313dcaf212301ddf9e665872f35868ce966002d175ae153c1f14c1b2c048a","src/span.rs":"6c3fbc496b5812ea418fd203eb0f28f6e7fc3a6645aa6555d8f833d83bb6114a","src/valid/analyzer.rs":"777d476de2a853a3be81e1016b1d0257f3d0d9a749d3b49ae7f22fce6b74d1af","src/valid/compose.rs":"46eeed8c4d5b66fc043ddb701074bd864a9fdd24e38b88e282046230acefb747","src/valid/expression.rs":"f4268f67c0b612e356cd35982a7be787bf9a5db5cf3b5cde95f293aed8cc7901","src/valid/expression/builtin.rs":"525f146cd1a1e0f554552ee6f1a997be112b9390e3d98034e67d123e2ef41158","src/valid/function.rs":"c6607bc6b2a19abe80048362294826d304ab32d10a502def7f0c39bd5a310c1e","src/valid/handles.rs":"db70ae92d1e043c8e45bad8a356d5e9c6d6f1067f3f70ab29051146621ac6537","src/valid/interface.rs":"8c8ebe2aa97fe635d7fbfcbd940f9348e234c4a6c49722a80435f7801805a717","src/valid/mod.rs":"40360e083b545d255d6f87bf4402ce8a3983795699c34031de8c211e46d2fd36","src/valid/type.rs":"be0ed589f4b0462713e76af1b7a57b033620d68f21d476bbc7ebb848396d4856"},"package":null}
|
|
\ No newline at end of file
|
|
+{"files":{".cargo/config.toml":"7248ed3bed246d755d7bf9e5d7842d74b5c270ba6c29ad907872b55a67707ee0","CHANGELOG.md":"e60105d413f857e37dae165f819c47491d0a595183d3c9146b259d811b98b14f","Cargo.toml":"0b1d18e1078097519767622e6f20eebbcfafe531e86e9c7d6bfcc94c495dac09","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"5f2e894ebee3fabf280690ac67117d500824b69036a50ab63d09b84100377b3a","build.rs":"e9098f486e87d91710c07d40f1b32716e5debfe94a0b5e53e37075b0ee997eec","src/arena/handle.rs":"897b2b0eebe0d9ae6a65bf2e8c210c8391924da06ef4c9e2a1225ad622400b6c","src/arena/handle_set.rs":"5c2a0bcf41d85c8173ac68b2d439552e79d0c3c0fe1ff3b1e1a48f0c83a4d48f","src/arena/handlevec.rs":"208d99644f9a6b6c1e88bbf9b280b01c62ce5bc8243727b31bafc3cc296d71c9","src/arena/mod.rs":"e7b574f5c592e3c32bae4a6e08b065ba1a9766740c9c85649e99b6dbdb790843","src/arena/range.rs":"0041168cee4c25d6b5bd4ba5cd42e138383f6a845e95ead3689bd3dd85c8b55c","src/arena/unique_arena.rs":"0e2d1c372a7c40b77793dc413b8920e86459e4656775a010f32974b4ad67a7fd","src/back/continue_forward.rs":"8194d238763caa6d5601ec3af56ba39a471c39945f43152b58d582092c99aefa","src/back/dot/mod.rs":"ec559c1cf6f3c92c75af639c7150c48862fff04965ec6b3f30e20e3a41c7c772","src/back/glsl/conv.rs":"86f03b46c66c907d3561508fd1c6c05c05d21d957d64d14631ac6ce9eeb36277","src/back/glsl/features.rs":"6ec0267f1ee47195d99fe849f291358efee00a7d035b964d9aeff8652c1700c4","src/back/glsl/keywords.rs":"fee8ed132e44bace54869a7c169a1ab7ed55db1bf590b4b1bce9efa4552e1dd7","src/back/glsl/mod.rs":"2486447c7cc9462d2407d55015d7f92249e148ff77c6a69b7b9a4623fb06742d","src/back/glsl/writer.rs":"a703268ac13b598842a16b4c641043921fd6205b33c395b3a17d35819d820ba1","src/back/hlsl/conv.rs":"d1a28aefba71eda7cb4533deeca16d65cb8a0a2a6f3210fdec3c4ab4fbe3c1d4","src/back/hlsl/help.rs":"12ddb9d08fe64eb34b66ae2166edffce5106a04ccef0b8cc0391a6fafd676270","src/back/hlsl/keywords.rs":"35285ad56319ba8c8ba86064d71e7cdba82303ecfe4cfda97fb983a53c17a14b","src/back/hlsl/mod.rs":"032cbf74d7bd488e7fc44e83c98c0dd6132f2edb945e68bf8fd2cbbfe51d43e4","src/back/hlsl/ray.rs":"e3c9edc9b410af18ccf8bf717e4a33af20eefd15a404cdf460460236000dc8bd","src/back/hlsl/storage.rs":"5083d03b1f25fe767e45e0c507bd30424352fccd48484c081620712d3682aae8","src/back/hlsl/writer.rs":"091835f0e6f77ac5aa1092da91cd218ada31c9865ab3bb6836204b609537110e","src/back/mod.rs":"6776b7d04e5c6ce89c020a35d2e8009a80b9468a12c06dc8f89674a33c043cf2","src/back/msl/keywords.rs":"bba3d9da01ef28ad71b4aebcdb0cd3a0c17f7ebbe6a75f5defad0ccf7d905a2d","src/back/msl/mod.rs":"813ed385e1a03a976b444542b21a3f3d689038169b8f164a92d9a4826f09b2ae","src/back/msl/sampler.rs":"173ffc391fae1b3008cea89d7bb2e183eeb182acd30a5bae80b1f0cf1af569f9","src/back/msl/writer.rs":"8624ad46a3e43693bb848e9c32650ee29a7668d4d1abb28b99d4719176620ae4","src/back/pipeline_constants.rs":"8a0ef8a03605007bf238b611fe0e626e0b84eb3714a6d354b6c6cc6817b589b9","src/back/spv/block.rs":"8038957c694aebac807b015ab960337adc8bca65d8d6b3d39cd44e81e305f989","src/back/spv/f16_polyfill.rs":"44ce07ef497dff13a9152eb9bc5936c486ef53de6d476da6b0a39396b0e6abdb","src/back/spv/helpers.rs":"d8f710a1ad34486fd6a69802c041db6453d06e94296f1829056d60107b10d130","src/back/spv/image.rs":"105b5f8286d6afaabbb6fd7a5f86380274bae4011f3ba28c4f860c3694678557","src/back/spv/index.rs":"cbc5b99f38fca8c5dd19a622a7b4b66907594532774958be28833f399c066168","src/back/spv/instructions.rs":"520e2c35d799e228a44758f5fb18b047dfa6701023e320447f30f003233d01b4","src/back/spv/layout.rs":"279b6da152a113781df2ce42c73bf8b2861f7affdfd8d48d5f35c810363831e7","src/back/spv/mesh_shader.rs":"8687c7e45557fa85d144a68fba5510431a2000cd10d31d36684a4ec908e6a967","src/back/spv/mod.rs":"655b9cb06175c7ccd455b62cc123a1cd8666627d23f48a4b37c527ab064ae14e","src/back/spv/ray/mod.rs":"bcd6fe9cd407c13d6eb76740217e49992e3479a8e327410b8d9688d2b0eea21c","src/back/spv/ray/query.rs":"e49a8d5be0a828f7b6f0dc076b57a37b402942ea0fc777130b550e80aff73ff0","src/back/spv/recyclable.rs":"8ea397d4d8d3f2cd5fbc8e0be94d136c2d6e0f0e8a4b5eb567dcc1be104c9ae5","src/back/spv/selection.rs":"4d8b695a9796ca2cb701ef3c4a52d8c0099c55818487f5163edd3c58e1610156","src/back/spv/subgroup.rs":"68fc3e3153022a0a8bddec20ad9221820678f02921878318e571d5aa2ca13cee","src/back/spv/writer.rs":"98cc96ec547bdd22ea507b608fdbbe33c93a72c5d296ffc2aec262bc9bd08947","src/back/wgsl/mod.rs":"1b04d66e8dba609513d43431d1f0ee9a209fbfd8453862d6e8a7aa41f8910997","src/back/wgsl/polyfill/inverse/inverse_2x2_f16.wgsl":"9e7635d04724822931c805a8b35e76d6d294d447e4ea8d57b308ce45609bf736","src/back/wgsl/polyfill/inverse/inverse_2x2_f32.wgsl":"340d491abde07f93996391796db65a5f88402663eaf6b9d2d894d11cb8cf8b6d","src/back/wgsl/polyfill/inverse/inverse_3x3_f16.wgsl":"4f13a1a4b3e1b51f0f992d13c55cf854a80917554a4d13c997819fa1fe776ba4","src/back/wgsl/polyfill/inverse/inverse_3x3_f32.wgsl":"9b16d2f4b9e433c8e03a0cb46ab48508f3bf7e185ce1b4e26106c47e81a677cb","src/back/wgsl/polyfill/inverse/inverse_4x4_f16.wgsl":"86d39d1db5d03995b404950279db7f1698ad9622982aa319fdedb7532673235b","src/back/wgsl/polyfill/inverse/inverse_4x4_f32.wgsl":"dc510525ac2dce66389a8c4bf8b2f31f0dedd9e6debdbe4ffd939a0a7fc533d3","src/back/wgsl/polyfill/mod.rs":"f4ab3c9b9cdc36d16dab00d0f7f07d6e6beda0e27a36053e9b5ffeeb7ca18edc","src/back/wgsl/writer.rs":"61a47a9d23cea6b370b5cc2a49f083c123284f915da5492ea9d614b47133842f","src/common/diagnostic_debug.rs":"8c73fe605e5b6162d0485e264287ac50c061cf581743feebbffe1474d1d3516d","src/common/diagnostic_display.rs":"46f1ff8a32179703ef0bcdb704db9f6e6e8b4eaad6cadf94577eeab3d8a16cd1","src/common/mod.rs":"0c979fd43068cfbceb7b29ff0bc578327e0770d5403c12f48d8605f77efbe200","src/common/predeclared.rs":"a5f42d55f2e13d8f5a8213d4a881e9155c3994c4054d43edcf7bd7bb7c868ccf","src/common/wgsl/diagnostics.rs":"4fec985b4c5cc6dfae4dd78bd7c850adc88a1761d7b6691de0355ea49300e532","src/common/wgsl/mod.rs":"d944915ff692c96aecca67737bccc2d5d9eb68f475166a2744f29a025f4a4c93","src/common/wgsl/to_wgsl.rs":"882e2404813fb494c9ae6b1c4461b8752b3469040f509dc8bb1d42da242e131a","src/common/wgsl/types.rs":"62da42d9d21f542b7aed9393303ba8c17feed49c4f82cb4a339fa0ac2bfacef0","src/compact/expressions.rs":"e2b4267ef76b75e452bc3b58c474b0a2960f0ffbec15788a79cc63eea14d73d6","src/compact/functions.rs":"b033cfe2212f1fd8170076a960c5793c2e62857603baa738ea5280e8880c0eac","src/compact/handle_set_map.rs":"b4688bff174487f2da4a1a946af07c80b6ba59f60dc84184c6a30039354209e8","src/compact/mod.rs":"25ef93ce732860a253d1cc2041016260737e2f4ae22d17f88f7f5265fdbbb03b","src/compact/statements.rs":"35ea07c549183d8c768bc4dd26dbe9b5c9b2b70ca9b57bc96f6611b7587c5112","src/compact/types.rs":"32abe0e0e0d55044685c5c0d20d1688970217f106270f2bd4a35aa0444a5bdfe","src/diagnostic_filter.rs":"5e3d14a774974148b7d2918617ba3e2c3a07493e0f90485a7de9db86e05a7cd0","src/error.rs":"8ea0b2b39800ec3af13e001df8eaea385f5c23ed41587daf66e545af213f4eec","src/front/atomic_upgrade.rs":"86ce9f9628d92a1a09802cb534bb4310236b83f2799c921b81c687f009c589be","src/front/glsl/ast.rs":"34fdd3d113b85d1f9cad8dc9ccdd944d1c5e88eae8f46b7088baa49e0307ef7b","src/front/glsl/builtins.rs":"ffe36464b5758dd8c917c3e9505d4027268e4b019174f0f95a229cd16d4cafa1","src/front/glsl/context.rs":"504c63d9aeef452b7dfbc1ad25bfbd5e51d3f514ad03818d1fa0a67924c2d2ec","src/front/glsl/error.rs":"f445297e0357919e2345ae15f2d23c58d36a64c9a666f1cf1b09cbcfd6e4627a","src/front/glsl/functions.rs":"4d779157163e354c31fddc635f6c93c8447293c5528311c0814503ff0d8afdfc","src/front/glsl/lex.rs":"24706628b600b5ce435cef464c84196ac5d58013122a97e7b59d509cc25f85a2","src/front/glsl/mod.rs":"132f2a60812b3910f65e6281562d4dc94efa329fd1eb0f2778ffe67631a35f78","src/front/glsl/offset.rs":"66bd524a2d17dc44f431430dcbbb74a771fdab43c9581e88bb1123e6cfec516b","src/front/glsl/parser.rs":"95426e630b3ef8a9581f90c0e98af6e18bd419803baad02ebee0451c64d0f25d","src/front/glsl/parser/declarations.rs":"311212375f0ba39ef77889acadd54b9909cc9d043e424c0b6c9db3220d68d03e","src/front/glsl/parser/expressions.rs":"828f11ed3227de315d5d1b14f6f84ce098f77af9e31ff3ceb4e4906121d932fd","src/front/glsl/parser/functions.rs":"302e24e06190aff555131c33f9a80b15df6a0390d6c776f888a44d5ef7df697e","src/front/glsl/parser/types.rs":"ee242048a65cd3709e16b70a3882e9296e615327480f2ad779e3d2523778181f","src/front/glsl/parser_tests.rs":"6834f0d595f4077266054e5da43e4f1b60e5c6780611ab0f530d9964cc62fad3","src/front/glsl/token.rs":"83780c0c1954ef216896c9d8a48e412b357783e00ccd4909a7a249935c742629","src/front/glsl/types.rs":"286395d82707a09d28b4c1a8bade917822478e53d8eb277ceec5fa9e71649ba2","src/front/glsl/variables.rs":"73db9f5364de14092c81b917c2ec0d4114a727d299e569be5b0cae94a0ecdd2e","src/front/interpolator.rs":"caf8c8c3ddca56fbece33cc18615c4d8c5b3b68112c9de22196d9dd49c84bf96","src/front/mod.rs":"fddd2be54ff44b52743ac8eb4a19e153a8a169af8e65d9061a9b9fc9857f64db","src/front/spv/convert.rs":"5bf4d8d02850c98d4d7fb05e60e1c0ed2cc765a3b675a3d034d64e3dcf17e1f6","src/front/spv/error.rs":"d08e1d65716ccc0f2a94a1285a1d034fa4840dc79ca60a5ec7481697bdec74d1","src/front/spv/function.rs":"22cd3d699eedfdcd44e2c28fe36a0374cf0915950172b47018b0862c8db3ee2c","src/front/spv/image.rs":"c39ffdb19a19861cec009de39431a879be99bdd4d9d08c0ecdef397c2f3f6fa5","src/front/spv/mod.rs":"64fb834905442b0455abf4b39b6924bdf2f3fcfb633d33600eae7cfb5c2c382b","src/front/spv/next_block.rs":"df7903c7de3b5f98fc3308868135ad65f5681f19a08c4c0cc0768735caf98dc8","src/front/spv/null.rs":"ee20287365e025e8bcc91f29df930ff8b63cb6d7f26db0b1789d54de614a7353","src/front/type_gen.rs":"111832af89a268ae3206d2ba2159b9b9d64224ed09375a29eec142725ea7fb34","src/front/wgsl/error.rs":"806c6312929cd599d6356eb5c2f33cabbd131c05d93d2893c5e82c39106a0be1","src/front/wgsl/index.rs":"476e5c4eddb14dfb53eee7976bcf4276c8a3fad81fbed92dc7b5dd31a5ab1593","src/front/wgsl/lower/construction.rs":"4462db904bf230c2fa7b32771933d826891aa41b08879aadd6097e396c66116c","src/front/wgsl/lower/conversion.rs":"f5f82649f91313dde91b2840aa399125c766340ec46a41bef6db33f00cafb7f6","src/front/wgsl/lower/mod.rs":"fa24bdfc69da05002a3a45295170d48768980129f00289f1994693d0ca6cf8ff","src/front/wgsl/lower/template_list.rs":"62ca31b4f3240c16f70caa3e78801a556da740010186e5c1f3723e3ef6f6c815","src/front/wgsl/mod.rs":"c115e0154a68b762d162ef3529060f23659b13f95f8e2d326f043015ff3baf06","src/front/wgsl/parse/ast.rs":"5765cb2046c9a33a19a47d0e1a96be4f35c28625e9b6ebd338fa11bd7ab1cca2","src/front/wgsl/parse/conv.rs":"c9f43e2137ce329a0af9ac7ddeae361b2e56f8216a5e3253915cc7b377bb3900","src/front/wgsl/parse/directive.rs":"c96f33cef2c1d8a374fe1b3827538f7db33d6b7811a6e0914d29de80b8963257","src/front/wgsl/parse/directive/enable_extension.rs":"094dd43ff667fba931cf5a0e1ef1cf22db64923cfbfdc1a9875832440c22a53a","src/front/wgsl/parse/directive/language_extension.rs":"1ddfd0331ece96eddbb07a971991dd6285bd58e0276d94a5c26bf30eab0ac5be","src/front/wgsl/parse/lexer.rs":"73a76177bfb7b0382b908517c5857a2eb5f7de30c0e4afdca3215a8179d32bdd","src/front/wgsl/parse/mod.rs":"4861d16dda7f4dd179e4381e72d8f9ea91c82b37c444fbb9124a7999db30d89d","src/front/wgsl/parse/number.rs":"7af92c71031e4c4258e9d8d323f7ee99a2fd4be3b6975ab9b8b53b95431845d9","src/front/wgsl/tests.rs":"c0bc29cc8cc786a0b589da267b99a9b5e0c0871f8326d84d3b563025860f77bc","src/ir/block.rs":"85bac7b476b48240ebfe3660a2b3e781752faa895f71f7e52393e75e0bd8dbb7","src/ir/mod.rs":"9d3921b1f4304f9912f3fa6c5ef6648be27179a955064f88ce33ba4f68e4f16d","src/keywords/mod.rs":"47a6fde012bf7d1e70f0fac7762f6a8e7dca6b9bbb99e2cada773c61527cfbfe","src/keywords/wgsl.rs":"2448982b88efc945cad1fca249e111f9e8cee7fdca110e13913960b012cc94b4","src/lib.rs":"1e40237435eebd4a91fd5c9b2e8a58664ebd1c40a0d27c0c5220047f0221704a","src/non_max_u32.rs":"b2d81efda0e1e5ace9e2fad990a7adf628f1dec63273b069c93d5423eb78350d","src/proc/constant_evaluator.rs":"bfa528f6f09f2c7b5a9bea0929ec373435987cd971f87ce7800b7cbdf63e7023","src/proc/emitter.rs":"76e264b4c0877fe30bf20135685a289b76001188a78d5ca5b88edae5bb29646b","src/proc/index.rs":"a356017af35132873944f45183de968f3ccb605d9b953365488d2cb80ae0cfba","src/proc/keyword_set.rs":"928414d2b79ee48735d532e03d3f0a58427c3f27a2a0c6938425749b00943784","src/proc/layouter.rs":"fc55708da27682b1977c6aaa8b04ae2756ed7359026ba55dbf127509d8b6c4f4","src/proc/mod.rs":"9b6ec7ed566215ce453c4b045f5aaa101a3d9d77199e314015bbba6e66b90a24","src/proc/namer.rs":"5df27ec6f930fcaa3c2eddf98342dffc088db1e403d09258a82f895bdde70c18","src/proc/overloads/any_overload_set.rs":"877cd637d979abc08caa021dabb9821a79fc9109eb97024a230bcfac82830388","src/proc/overloads/constructor_set.rs":"b702f866ac1472bcc075bd0bede450388123b5899431934fd60a29865498c68b","src/proc/overloads/list.rs":"0a4ff2a43e035da2cf4a321a15afaff676377838095e691d3e5447f8d9180ab7","src/proc/overloads/mathfunction.rs":"305716a575bed3ec456db583e65bd5a972f1448612b6f260b278ae0b79802540","src/proc/overloads/mod.rs":"0e96479cbd0ec9fa8200a5e88c16a22ee7ed2021ecf6f80a7e4ded69cad5239f","src/proc/overloads/one_bits_iter.rs":"6b98769fdec777d311248084f13958c5cca44659d0928603ece8618387ea58b2","src/proc/overloads/regular.rs":"73d64fab79019d589cb0595d0ef606fd6af732c42a418c60c81da4c96e113c89","src/proc/overloads/rule.rs":"b7f87d5ca0cffdaa8ee0db0110918f5a726359fd8a72bc638d8ce27a4b0ae3b2","src/proc/overloads/scalar_set.rs":"3729bc754dbf29a2337379ecb46568fdc3149a48074a354244da91e3d9cb5cef","src/proc/overloads/utils.rs":"d8f661579e917edb892b6a7e8babadbc0db1a110d74558b81b49b3331bd07a5e","src/proc/terminator.rs":"c0eed3f6ab3c392c6953fce47b7487d3a767a1299ec764711ed3bdcfbf1248f6","src/proc/type_methods.rs":"99498c3e300dfdd7c6414c7017e374c15d02e110a07d82242953a12eb30a3943","src/proc/typifier.rs":"2d9d1ec55b1c2d2f8f612cd3dbae8ff98e5d475b8292e3ddf60d3cf2966d0cab","src/racy_lock.rs":"c56313dcaf212301ddf9e665872f35868ce966002d175ae153c1f14c1b2c048a","src/span.rs":"6c3fbc496b5812ea418fd203eb0f28f6e7fc3a6645aa6555d8f833d83bb6114a","src/valid/analyzer.rs":"777d476de2a853a3be81e1016b1d0257f3d0d9a749d3b49ae7f22fce6b74d1af","src/valid/compose.rs":"46eeed8c4d5b66fc043ddb701074bd864a9fdd24e38b88e282046230acefb747","src/valid/expression.rs":"f4268f67c0b612e356cd35982a7be787bf9a5db5cf3b5cde95f293aed8cc7901","src/valid/expression/builtin.rs":"525f146cd1a1e0f554552ee6f1a997be112b9390e3d98034e67d123e2ef41158","src/valid/function.rs":"c6607bc6b2a19abe80048362294826d304ab32d10a502def7f0c39bd5a310c1e","src/valid/handles.rs":"db70ae92d1e043c8e45bad8a356d5e9c6d6f1067f3f70ab29051146621ac6537","src/valid/interface.rs":"8c8ebe2aa97fe635d7fbfcbd940f9348e234c4a6c49722a80435f7801805a717","src/valid/mod.rs":"40360e083b545d255d6f87bf4402ce8a3983795699c34031de8c211e46d2fd36","src/valid/type.rs":"be0ed589f4b0462713e76af1b7a57b033620d68f21d476bbc7ebb848396d4856"},"package":null}
|
|
diff --git a/third_party/rust/naga/Cargo.toml b/third_party/rust/naga/Cargo.toml
|
|
index 0256a53..dd988b9 100644
|
|
--- a/third_party/rust/naga/Cargo.toml
|
|
+++ b/third_party/rust/naga/Cargo.toml
|
|
@@ -11,7 +11,7 @@
|
|
|
|
[package]
|
|
edition = "2021"
|
|
-rust-version = "1.90.0"
|
|
+rust-version = "1.89.0"
|
|
name = "naga"
|
|
version = "28.0.0"
|
|
authors = ["gfx-rs developers"]
|
|
diff --git a/third_party/rust/quinn-udp/.cargo-checksum.json b/third_party/rust/quinn-udp/.cargo-checksum.json
|
|
index 94ba909..bfa4065 100644
|
|
--- a/third_party/rust/quinn-udp/.cargo-checksum.json
|
|
+++ b/third_party/rust/quinn-udp/.cargo-checksum.json
|
|
@@ -1 +1 @@
|
|
-{"files":{".cargo_vcs_info.json":"707a4fac36952c0136790853fba415c1e6b3a3418b282599b52a968009c43494","Cargo.lock":"39882ba9584ef645766dbc62a5c9e3ee2a975f62f2c4d22f6abef49a7a528388","Cargo.toml":"7ad4bf29c5b820a2d3a1c7e1b016269f6d501b3067974b56b66577fca1906af0","Cargo.toml.orig":"91e2b9a2b1b3ef22faf5a360a78086820d2e2b60d000b8cdbe7f82220fede109","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04","benches/throughput.rs":"86cb85d2ae07169da8c279861c53b7a055168aaaa91155576c633b8724748db6","build.rs":"1d7ecadda4a26fb0eba598789eef9b99a1b4febba9bcb61a34f0c92b1d1bbaeb","src/cmsg/mod.rs":"ccf970026c8578b1c4661fbe106093dfb62b084a231ecbb4c62eaa10df5822fe","src/cmsg/unix.rs":"7917bce2f3c8e844eca2e4cfea82669b2a31cf311321dc42532626db4ee42de8","src/cmsg/windows.rs":"6fb936ec4a283efc5796872e777441e3039c40589073865644a8ef7936af4f4b","src/fallback.rs":"1e59ea16c6e1487bbb6aa759e349000431474aa245960512cb3b5117a1ed9e21","src/lib.rs":"77d48436bbfcccaea8dc3f061acc874ef5089148bf1700fc7a61b1b3d1b575e1","src/unix.rs":"2c2a32c3df9d27cc8964b46681700215ecf1f1baa6a363b88f1f11bdd4c92cea","src/windows.rs":"43da25457cb17c61369c3ba2c1d98f0ff758c5ea3207ae22969cca1f620b54af","tests/tests.rs":"bd4ee24b0e1ccab9beb444541b472bc1e815e2aba19d75572a379b6e1533449c"},"package":"fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970"}
|
|
\ No newline at end of file
|
|
+{"files":{".cargo_vcs_info.json":"707a4fac36952c0136790853fba415c1e6b3a3418b282599b52a968009c43494","Cargo.lock":"39882ba9584ef645766dbc62a5c9e3ee2a975f62f2c4d22f6abef49a7a528388","Cargo.toml":"7ad4bf29c5b820a2d3a1c7e1b016269f6d501b3067974b56b66577fca1906af0","Cargo.toml.orig":"91e2b9a2b1b3ef22faf5a360a78086820d2e2b60d000b8cdbe7f82220fede109","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04","benches/throughput.rs":"86cb85d2ae07169da8c279861c53b7a055168aaaa91155576c633b8724748db6","build.rs":"1d7ecadda4a26fb0eba598789eef9b99a1b4febba9bcb61a34f0c92b1d1bbaeb","src/cmsg/mod.rs":"ccf970026c8578b1c4661fbe106093dfb62b084a231ecbb4c62eaa10df5822fe","src/cmsg/unix.rs":"7917bce2f3c8e844eca2e4cfea82669b2a31cf311321dc42532626db4ee42de8","src/cmsg/windows.rs":"6fb936ec4a283efc5796872e777441e3039c40589073865644a8ef7936af4f4b","src/fallback.rs":"1e59ea16c6e1487bbb6aa759e349000431474aa245960512cb3b5117a1ed9e21","src/lib.rs":"77d48436bbfcccaea8dc3f061acc874ef5089148bf1700fc7a61b1b3d1b575e1","src/unix.rs":"a71b09bc3d274fc4c43f2f2f3d8b655ee6ae12e6144ee8de99764fc9cc37b40e","src/windows.rs":"43da25457cb17c61369c3ba2c1d98f0ff758c5ea3207ae22969cca1f620b54af","tests/tests.rs":"bd4ee24b0e1ccab9beb444541b472bc1e815e2aba19d75572a379b6e1533449c"},"package":"fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970"}
|
|
diff --git a/third_party/rust/quinn-udp/src/unix.rs b/third_party/rust/quinn-udp/src/unix.rs
|
|
index 3e7212f..a95924b 100644
|
|
--- a/third_party/rust/quinn-udp/src/unix.rs
|
|
+++ b/third_party/rust/quinn-udp/src/unix.rs
|
|
@@ -53,9 +53,9 @@ extern "C" {
|
|
// Defined in netinet6/in6.h on OpenBSD, this is not yet exported by the libc crate
|
|
// directly. See https://github.com/rust-lang/libc/issues/3704 for when we might be able to
|
|
// rely on this from the libc crate.
|
|
-#[cfg(any(target_os = "openbsd", target_os = "netbsd"))]
|
|
+#[cfg(any(target_os = "openbsd", target_os = "netbsd", target_os = "haiku"))]
|
|
const IPV6_DONTFRAG: libc::c_int = 62;
|
|
-#[cfg(not(any(target_os = "openbsd", target_os = "netbsd")))]
|
|
+#[cfg(not(any(target_os = "openbsd", target_os = "netbsd", target_os = "haiku")))]
|
|
const IPV6_DONTFRAG: libc::c_int = libc::IPV6_DONTFRAG;
|
|
|
|
#[cfg(target_os = "freebsd")]
|
|
@@ -86,16 +86,6 @@ impl UdpSocketState {
|
|
pub fn new(sock: UdpSockRef<'_>) -> io::Result<Self> {
|
|
let io = sock.0;
|
|
let mut cmsg_platform_space = 0;
|
|
- if cfg!(target_os = "linux")
|
|
- || cfg!(bsd)
|
|
- || cfg!(apple)
|
|
- || cfg!(target_os = "android")
|
|
- || cfg!(solarish)
|
|
- {
|
|
- cmsg_platform_space +=
|
|
- unsafe { libc::CMSG_SPACE(mem::size_of::<libc::in6_pktinfo>() as _) as usize };
|
|
- }
|
|
-
|
|
assert!(
|
|
CMSG_LEN
|
|
>= unsafe { libc::CMSG_SPACE(mem::size_of::<libc::c_int>() as _) as usize }
|
|
@@ -113,7 +103,7 @@ impl UdpSocketState {
|
|
|
|
// mac and ios do not support IP_RECVTOS on dual-stack sockets :(
|
|
// older macos versions also don't have the flag and will error out if we don't ignore it
|
|
- #[cfg(not(any(target_os = "openbsd", target_os = "netbsd", solarish)))]
|
|
+ #[cfg(not(any(target_os = "openbsd", target_os = "netbsd", target_os = "haiku", solarish)))]
|
|
if is_ipv4 || !io.only_v6()? {
|
|
if let Err(_err) =
|
|
set_socket_option(&*io, libc::IPPROTO_IP, libc::IP_RECVTOS, OPTION_ON)
|
|
@@ -174,7 +164,6 @@ impl UdpSocketState {
|
|
// Options standardized in RFC 3542
|
|
if !is_ipv4 {
|
|
set_socket_option(&*io, libc::IPPROTO_IPV6, libc::IPV6_RECVPKTINFO, OPTION_ON)?;
|
|
- set_socket_option(&*io, libc::IPPROTO_IPV6, libc::IPV6_RECVTCLASS, OPTION_ON)?;
|
|
// Linux's IP_PMTUDISC_PROBE allows us to operate under interface MTU rather than the
|
|
// kernel's path MTU guess, but actually disabling fragmentation requires this too. See
|
|
// __ip6_append_data in ip6_output.c.
|
|
@@ -461,7 +450,7 @@ fn send(state: &UdpSocketState, io: SockRef<'_>, transmit: &Transmit<'_>) -> io:
|
|
}
|
|
}
|
|
|
|
-#[cfg(not(any(apple, target_os = "openbsd", target_os = "netbsd", solarish)))]
|
|
+#[cfg(not(any(apple, target_os = "openbsd", target_os = "netbsd", target_os = "haiku", solarish)))]
|
|
fn recv(io: SockRef<'_>, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta]) -> io::Result<usize> {
|
|
let mut names = [MaybeUninit::<libc::sockaddr_storage>::uninit(); BATCH_SIZE];
|
|
let mut ctrls = [cmsg::Aligned(MaybeUninit::<[u8; CMSG_LEN]>::uninit()); BATCH_SIZE];
|
|
@@ -538,7 +527,7 @@ fn recv(io: SockRef<'_>, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta]) ->
|
|
Ok(msg_count as usize)
|
|
}
|
|
|
|
-#[cfg(any(target_os = "openbsd", target_os = "netbsd", solarish, apple_slow))]
|
|
+#[cfg(any(target_os = "openbsd", target_os = "netbsd", target_os = "haiku", solarish, apple_slow))]
|
|
fn recv(io: SockRef<'_>, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta]) -> io::Result<usize> {
|
|
let mut name = MaybeUninit::<libc::sockaddr_storage>::uninit();
|
|
let mut ctrl = cmsg::Aligned(MaybeUninit::<[u8; CMSG_LEN]>::uninit());
|
|
@@ -608,8 +597,6 @@ fn prepare_msg(
|
|
encoder.push(libc::IPPROTO_IP, libc::IP_TOS, ecn as IpTosTy);
|
|
}
|
|
}
|
|
- } else {
|
|
- encoder.push(libc::IPPROTO_IPV6, libc::IPV6_TCLASS, ecn);
|
|
}
|
|
|
|
// Only set the segment size if it is less than the size of the contents.
|
|
@@ -623,42 +610,6 @@ fn prepare_msg(
|
|
gso::set_segment_size(&mut encoder, segment_size as u16);
|
|
}
|
|
|
|
- if let Some(ip) = &transmit.src_ip {
|
|
- match ip {
|
|
- IpAddr::V4(v4) => {
|
|
- #[cfg(any(target_os = "linux", target_os = "android"))]
|
|
- {
|
|
- let pktinfo = libc::in_pktinfo {
|
|
- ipi_ifindex: 0,
|
|
- ipi_spec_dst: libc::in_addr {
|
|
- s_addr: u32::from_ne_bytes(v4.octets()),
|
|
- },
|
|
- ipi_addr: libc::in_addr { s_addr: 0 },
|
|
- };
|
|
- encoder.push(libc::IPPROTO_IP, libc::IP_PKTINFO, pktinfo);
|
|
- }
|
|
- #[cfg(any(bsd, apple, solarish))]
|
|
- {
|
|
- if encode_src_ip {
|
|
- let addr = libc::in_addr {
|
|
- s_addr: u32::from_ne_bytes(v4.octets()),
|
|
- };
|
|
- encoder.push(libc::IPPROTO_IP, libc::IP_RECVDSTADDR, addr);
|
|
- }
|
|
- }
|
|
- }
|
|
- IpAddr::V6(v6) => {
|
|
- let pktinfo = libc::in6_pktinfo {
|
|
- ipi6_ifindex: 0,
|
|
- ipi6_addr: libc::in6_addr {
|
|
- s6_addr: v6.octets(),
|
|
- },
|
|
- };
|
|
- encoder.push(libc::IPPROTO_IPV6, libc::IPV6_PKTINFO, pktinfo);
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
encoder.finish();
|
|
}
|
|
|
|
@@ -714,22 +665,10 @@ fn decode_recv(
|
|
ecn_bits = cmsg::decode::<u8, libc::cmsghdr>(cmsg);
|
|
},
|
|
// FreeBSD uses IP_RECVTOS here, and we can be liberal because cmsgs are opt-in.
|
|
- #[cfg(not(any(target_os = "openbsd", target_os = "netbsd", solarish)))]
|
|
+ #[cfg(not(any(target_os = "openbsd", target_os = "netbsd", target_os = "haiku", solarish)))]
|
|
(libc::IPPROTO_IP, libc::IP_RECVTOS) => unsafe {
|
|
ecn_bits = cmsg::decode::<u8, libc::cmsghdr>(cmsg);
|
|
},
|
|
- (libc::IPPROTO_IPV6, libc::IPV6_TCLASS) => unsafe {
|
|
- // Temporary hack around broken macos ABI. Remove once upstream fixes it.
|
|
- // https://bugreport.apple.com/web/?problemID=48761855
|
|
- #[allow(clippy::unnecessary_cast)] // cmsg.cmsg_len defined as size_t
|
|
- if cfg!(apple)
|
|
- && cmsg.cmsg_len as usize == libc::CMSG_LEN(mem::size_of::<u8>() as _) as usize
|
|
- {
|
|
- ecn_bits = cmsg::decode::<u8, libc::cmsghdr>(cmsg);
|
|
- } else {
|
|
- ecn_bits = cmsg::decode::<libc::c_int, libc::cmsghdr>(cmsg) as u8;
|
|
- }
|
|
- },
|
|
#[cfg(any(target_os = "linux", target_os = "android"))]
|
|
(libc::IPPROTO_IP, libc::IP_PKTINFO) => {
|
|
let pktinfo = unsafe { cmsg::decode::<libc::in_pktinfo, libc::cmsghdr>(cmsg) };
|
|
@@ -742,10 +681,6 @@ fn decode_recv(
|
|
let in_addr = unsafe { cmsg::decode::<libc::in_addr, libc::cmsghdr>(cmsg) };
|
|
dst_ip = Some(IpAddr::V4(Ipv4Addr::from(in_addr.s_addr.to_ne_bytes())));
|
|
}
|
|
- (libc::IPPROTO_IPV6, libc::IPV6_PKTINFO) => {
|
|
- let pktinfo = unsafe { cmsg::decode::<libc::in6_pktinfo, libc::cmsghdr>(cmsg) };
|
|
- dst_ip = Some(IpAddr::V6(Ipv6Addr::from(pktinfo.ipi6_addr.s6_addr)));
|
|
- }
|
|
#[cfg(any(target_os = "linux", target_os = "android"))]
|
|
(libc::SOL_UDP, gro::UDP_GRO) => unsafe {
|
|
stride = cmsg::decode::<libc::c_int, libc::cmsghdr>(cmsg) as usize;
|
|
diff --git a/third_party/rust/wgpu-core/.cargo-checksum.json b/third_party/rust/wgpu-core/.cargo-checksum.json
|
|
index 382cef0..cd7fab0 100644
|
|
--- a/third_party/rust/wgpu-core/.cargo-checksum.json
|
|
+++ b/third_party/rust/wgpu-core/.cargo-checksum.json
|
|
@@ -1 +1 @@
|
|
-{"files":{"Cargo.toml":"db3b322b6ca070a031f975355be3725d9902aa8e3905265390ecf45cb961771b","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","build.rs":"5e3619e28faeac243cbae1a5f739ad15035dc9e1254957b64fd1deed6f393c8a","src/as_hal.rs":"5d08d8e49b016abb662957d8e42ab748d580a2f3e449caeeb7311f222b8818f6","src/binding_model.rs":"7c802de1459aa92bda0ca7792be6dd1f457a5119fb48e08458ff4272f2dbed09","src/command/allocator.rs":"386cb6e60bd332a881dbbe57ff66a0fa83f35e3ee924559f1689418ac6c7273a","src/command/bind.rs":"26e3e693515dd82ae421b5b28d32138e6d9b62031e66b6761f2345bf2aa67148","src/command/bundle.rs":"a95ad3e56c2d53ee03ddd57fe58126d7c17348650261bde14ad920a3727c376a","src/command/clear.rs":"4c9bef9ee29a0a6e72c1e5b48ea6832cf8be7300d7d4890d6cf1dc63c99dd7f1","src/command/compute.rs":"a1dd2aeb7838e6b3c92ef0ebfe7ea6ce55cd50949b230f5914237b2fab6e053a","src/command/compute_command.rs":"92351bef1de6914b5b313dbe0df5a3bd25ef074f68b6d750f2a0f8a9011cfa89","src/command/draw.rs":"6ca62ab86e0b2216a1ac32e0f5b0d12653346a3e39922ffd9df722be7ed263f8","src/command/encoder.rs":"7655f8c248120f39e37f3ad0f84bd9816df78a75657790ab12d5aba144fef65f","src/command/encoder_command.rs":"2f9417c9c6c0cb52db561ed7d8a777fc29b59ade95a98ffaf91e4bb84f3b8cda","src/command/ffi.rs":"4924adbb42a670b5e9827c0f2175939981e8fc78a36b2fe370426e8c550a4ce7","src/command/memory_init.rs":"f68a796c4262d261620cf85e5762e267dee013f4ef5d61f67fcb173b59048983","src/command/mod.rs":"5ca1aaf059424470618e539a3f57b4378b229d908cbd4d3ccbfea99c8879de4a","src/command/pass.rs":"2302e20d9208f1a07fb305da630d03706852746cb48a62b5b2f3c5b1b34ad475","src/command/query.rs":"c722db4332742a06cc396571d44d18e709db5aa4161ba592eb8a319cda4d25be","src/command/ray_tracing.rs":"818788dd5e37325367832ec969e21ce47363a259754f907d518336ae5069f0bd","src/command/render.rs":"69b9a1b629c376058a8633a524ed2cd43593eaeb364e384df477e9850364764e","src/command/render_command.rs":"2e639cb0766d8de3047abb6997cc508b07f0c0adc1dfd1beed5f565af8b9eeef","src/command/timestamp_writes.rs":"da06fb07b8d0917be3e7fb9212d0ffc6b16526e1c1df617213ef354c3e1fb446","src/command/transfer.rs":"02d4fc7473e1b896fa3cdbf9fcaff7c863af131585da4dac41c461448a7b7a02","src/command/transition_resources.rs":"753cb02adfee4758404c403d19fd76e6c8de77de01435a2cbe2f60bdbe44bde1","src/conv.rs":"6142ee1793ad9b59dd3b95c87f15539a17333e0780c5dd5bdff92475711f1b36","src/device/bgl.rs":"b081fe1393f1dd917151efc3a10ee0269fecd3920eac3b45411c1197a98c5a06","src/device/global.rs":"d59fbcfbb2c8923c2cfedf00b86616a4ad1226fb833b38dbbce5db805bfdf072","src/device/life.rs":"44bd34cf5ab1c1a21729f2188df6d2ca0238f11c5f723380c8a4a16fbbd90b88","src/device/mod.rs":"945bcd919033911b99e3a96721dad611251f1f2a33a7dce24f6afad81f48cdca","src/device/queue.rs":"f112a22ff6101196e1089fa6579ff074aef6d898ec4fa80073bf559e5e22768c","src/device/ray_tracing.rs":"6f8df97f9fb1a3405a651d96619760ba7cf14830e28f65e824413a4f922abd95","src/device/resource.rs":"461bfcb87cd3b3bfec022c87449f183041d3ffbb9e61c9fb03e7ea7c20a44edd","src/device/trace.rs":"6008347ef381ec6825567b5cd374a83d4ad8460b3b64e1560caea5baf77f9099","src/device/trace/record.rs":"9a61c3cf1f8a2864b15d5da3e1655fc95364adc97278a5f74da7784148c45a0a","src/device/trace/replay.rs":"8138e5500db77855351bb71225fbb283e44a77257b46a7149c5af0144fd8e22f","src/error.rs":"4f07a0b09b30b2d6cbc855d0091d724000f492018af3b41e80befbeccf2a6f4e","src/global.rs":"b29b96777103398ed337ceae8d866c4606c5cdc5ace2db6555bacf66766306af","src/hash_utils.rs":"9f57a627fe3f00659391670141df62f68d67922c7b186f2a9a5958ab16fb576f","src/hub.rs":"563ef01e7bfbdb2ed5f37f0f3d0925f88d8398849651e97e8ae7922ab5b3bf39","src/id.rs":"055db08b33ce68b582009c01bbffe6cf58553b2a29abae842df1b3eb532ca4a0","src/identity.rs":"712ccda267eb602655c53672a94346aa4c9f88c0044ae6edcd658a814c9a50cf","src/indirect_validation/dispatch.rs":"de779f3f12513f67f24d35e31a1fcc8ae09455a87b0020a5d7671d08a3cd7305","src/indirect_validation/draw.rs":"f5c4ae3bf748d3a23ffcd833619c168f36ddaf2fcdbede91a4f595de0500975e","src/indirect_validation/mod.rs":"79466e4f9a59386e833958b3537beed6ffb6a7ee62aaabcf35382c2683998e43","src/indirect_validation/utils.rs":"e6a3b636dd71ff6b01d5abd5a589a0136fb30aa1d517a43f45cf2e5ad54da245","src/indirect_validation/validate_draw.wgsl":"35a34174ac4a61b9684283878eb42468c1843b6778114bff3ef4dc40976e05d7","src/init_tracker/buffer.rs":"6167a400ab271ba857f1c507e60a46fbd318c185aff87eecf7eb05f7f09b6963","src/init_tracker/mod.rs":"38773a6e51c165d8e54f1ab56f2a0c20c3a126ac3cb19733ea8b423fc305e214","src/init_tracker/texture.rs":"ffdc67d4be23bcd48b22945de94ac0ea8ee571f91eb6d00323b9afe6fa91eef3","src/instance.rs":"f75b9ab96fb6eceab095412789eae89c03deeed45a8bb6f042864f395eb50e8d","src/lib.rs":"57d2562e33b04113cc6c2ca3bc9a215ec779a291be82b680ff037fac7d7a8a15","src/lock/mod.rs":"8d3ae3f8d004d7f7d8a3aefe9f30b35669cb8e2409f5fba27b1fcb116b2429c4","src/lock/observing.rs":"723d57ff30b2abba64e65baf7523f58eecd794408d25e455923c2b293a6689ed","src/lock/rank.rs":"64b554c2c0996b9e5817e2cab49a4b46b9b8e7147873fad045c1b1031caa25db","src/lock/ranked.rs":"a95d6bf7f2ef510047a4c33687076beccf38a0148aac3261bd29fa7555e3f488","src/lock/vanilla.rs":"ca8156d4c981473d437db1056487a44c714760d685819eaff8cf82fb0098a608","src/pipeline.rs":"c602c3ee32442f416e3209788ed5768ea39dc6b0c52d66e419b2ad3d3e0fefab","src/pipeline_cache.rs":"96a7d2a5decf61a2906fe38f73377c9b785490a9510ee51eae553aeeaef799dc","src/pool.rs":"e11bfdc73a66321d26715465fa74657dcd26a9b856b80b8369b4aac2132a4295","src/present.rs":"c978a5cb832bee668e94d96ed0b1fca481b5ed3c34236c75518857fb124883e6","src/ray_tracing.rs":"ae43907290f003f6247bb599927401bd768865f7773a41c327dc73fade014ede","src/registry.rs":"2a76c6397998d263b6f6347299f04a8d27ea4df7dda200e98f205cfa3850dadb","src/resource.rs":"ca81d7f4b82669c034ddd8a5de5ba20cd3777284bef86a5a78e5cffd7e30dc1c","src/scratch.rs":"ea5c40e4d18a12f09cc1038f2dcdddb69b13e99275ac987d826658229a39b326","src/snatch.rs":"bf422810afd952894e365cd397763d42d6365ce3c5a5b4c1170566432f462939","src/storage.rs":"1a5bbf125a1cf65a36d8580e426ef1847c1638003fea0c6f76e309f5923b7692","src/timestamp_normalization/common.wgsl":"9f65aef0526ff9dde945fae70cef064ad961b0aee4291759ae82974cd2ead0a7","src/timestamp_normalization/mod.rs":"4fb7a4d6c53797edc9dd3893a8e25d4efeff14c4846a8927d865101a6d7594a2","src/timestamp_normalization/timestamp_normalization.wgsl":"c0225bf02fdd741542bd20664a6d9195b91936e6f7758c9c4c0ac05b08122e79","src/track/blas.rs":"18c7b5b89a60ab49bbc0f4f8b85a24502c1d968714ef4c586095e119848d902a","src/track/buffer.rs":"7f2393d16d0e8f624327c7a3a1de7176f945f3d33bfd3e12640faddc5c2c9f83","src/track/metadata.rs":"29d8ada9486ac6234ef9de6e7e5ada9cb81ac0db1289dfef905ce1d46c9bbfc6","src/track/mod.rs":"c28de55e31cdde3feb067945a04446dc5343a39418c4b9c2c76148172e7ba855","src/track/range.rs":"2688b05a0c6e8510ff6ba3a9623e8b83f433a05ba743129928c56c93d9a9c233","src/track/stateless.rs":"3db699f5f48a319fa07fb16cdf51e1623d6ecac7a476467ee366e014ea665b89","src/track/texture.rs":"34e72a20364d3ce642c21b29a089811503aa2fb4e7dab1a1e20d8ddd598742d7","src/validation.rs":"70e77edeb901bbaa4eed33bc451f1c856d3515027628b0f7b144d8cbeb060fe0","src/validation/shader_io_deductions.rs":"98f08f0b29570b65c62510b8a66055696b8797ce256ed7c62e282b101cc32e4b","src/weak_vec.rs":"a4193add5912b91226a3155cc613365b7fafdf2e7929d21d68bc19d149696e85"},"package":null}
|
|
\ No newline at end of file
|
|
+{"files":{"Cargo.toml":"7f45041c0e0cf2f9e09ea3b602857dc2068108508993bcfa5c89fd5d6cfacc06","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","build.rs":"5e3619e28faeac243cbae1a5f739ad15035dc9e1254957b64fd1deed6f393c8a","src/as_hal.rs":"5d08d8e49b016abb662957d8e42ab748d580a2f3e449caeeb7311f222b8818f6","src/binding_model.rs":"7c802de1459aa92bda0ca7792be6dd1f457a5119fb48e08458ff4272f2dbed09","src/command/allocator.rs":"386cb6e60bd332a881dbbe57ff66a0fa83f35e3ee924559f1689418ac6c7273a","src/command/bind.rs":"26e3e693515dd82ae421b5b28d32138e6d9b62031e66b6761f2345bf2aa67148","src/command/bundle.rs":"a95ad3e56c2d53ee03ddd57fe58126d7c17348650261bde14ad920a3727c376a","src/command/clear.rs":"4c9bef9ee29a0a6e72c1e5b48ea6832cf8be7300d7d4890d6cf1dc63c99dd7f1","src/command/compute.rs":"a1dd2aeb7838e6b3c92ef0ebfe7ea6ce55cd50949b230f5914237b2fab6e053a","src/command/compute_command.rs":"92351bef1de6914b5b313dbe0df5a3bd25ef074f68b6d750f2a0f8a9011cfa89","src/command/draw.rs":"6ca62ab86e0b2216a1ac32e0f5b0d12653346a3e39922ffd9df722be7ed263f8","src/command/encoder.rs":"7655f8c248120f39e37f3ad0f84bd9816df78a75657790ab12d5aba144fef65f","src/command/encoder_command.rs":"2f9417c9c6c0cb52db561ed7d8a777fc29b59ade95a98ffaf91e4bb84f3b8cda","src/command/ffi.rs":"4924adbb42a670b5e9827c0f2175939981e8fc78a36b2fe370426e8c550a4ce7","src/command/memory_init.rs":"f68a796c4262d261620cf85e5762e267dee013f4ef5d61f67fcb173b59048983","src/command/mod.rs":"5ca1aaf059424470618e539a3f57b4378b229d908cbd4d3ccbfea99c8879de4a","src/command/pass.rs":"2302e20d9208f1a07fb305da630d03706852746cb48a62b5b2f3c5b1b34ad475","src/command/query.rs":"c722db4332742a06cc396571d44d18e709db5aa4161ba592eb8a319cda4d25be","src/command/ray_tracing.rs":"818788dd5e37325367832ec969e21ce47363a259754f907d518336ae5069f0bd","src/command/render.rs":"69b9a1b629c376058a8633a524ed2cd43593eaeb364e384df477e9850364764e","src/command/render_command.rs":"2e639cb0766d8de3047abb6997cc508b07f0c0adc1dfd1beed5f565af8b9eeef","src/command/timestamp_writes.rs":"da06fb07b8d0917be3e7fb9212d0ffc6b16526e1c1df617213ef354c3e1fb446","src/command/transfer.rs":"02d4fc7473e1b896fa3cdbf9fcaff7c863af131585da4dac41c461448a7b7a02","src/command/transition_resources.rs":"753cb02adfee4758404c403d19fd76e6c8de77de01435a2cbe2f60bdbe44bde1","src/conv.rs":"6142ee1793ad9b59dd3b95c87f15539a17333e0780c5dd5bdff92475711f1b36","src/device/bgl.rs":"b081fe1393f1dd917151efc3a10ee0269fecd3920eac3b45411c1197a98c5a06","src/device/global.rs":"d59fbcfbb2c8923c2cfedf00b86616a4ad1226fb833b38dbbce5db805bfdf072","src/device/life.rs":"44bd34cf5ab1c1a21729f2188df6d2ca0238f11c5f723380c8a4a16fbbd90b88","src/device/mod.rs":"945bcd919033911b99e3a96721dad611251f1f2a33a7dce24f6afad81f48cdca","src/device/queue.rs":"f112a22ff6101196e1089fa6579ff074aef6d898ec4fa80073bf559e5e22768c","src/device/ray_tracing.rs":"6f8df97f9fb1a3405a651d96619760ba7cf14830e28f65e824413a4f922abd95","src/device/resource.rs":"461bfcb87cd3b3bfec022c87449f183041d3ffbb9e61c9fb03e7ea7c20a44edd","src/device/trace.rs":"6008347ef381ec6825567b5cd374a83d4ad8460b3b64e1560caea5baf77f9099","src/device/trace/record.rs":"9a61c3cf1f8a2864b15d5da3e1655fc95364adc97278a5f74da7784148c45a0a","src/device/trace/replay.rs":"8138e5500db77855351bb71225fbb283e44a77257b46a7149c5af0144fd8e22f","src/error.rs":"4f07a0b09b30b2d6cbc855d0091d724000f492018af3b41e80befbeccf2a6f4e","src/global.rs":"b29b96777103398ed337ceae8d866c4606c5cdc5ace2db6555bacf66766306af","src/hash_utils.rs":"9f57a627fe3f00659391670141df62f68d67922c7b186f2a9a5958ab16fb576f","src/hub.rs":"563ef01e7bfbdb2ed5f37f0f3d0925f88d8398849651e97e8ae7922ab5b3bf39","src/id.rs":"055db08b33ce68b582009c01bbffe6cf58553b2a29abae842df1b3eb532ca4a0","src/identity.rs":"712ccda267eb602655c53672a94346aa4c9f88c0044ae6edcd658a814c9a50cf","src/indirect_validation/dispatch.rs":"de779f3f12513f67f24d35e31a1fcc8ae09455a87b0020a5d7671d08a3cd7305","src/indirect_validation/draw.rs":"f5c4ae3bf748d3a23ffcd833619c168f36ddaf2fcdbede91a4f595de0500975e","src/indirect_validation/mod.rs":"79466e4f9a59386e833958b3537beed6ffb6a7ee62aaabcf35382c2683998e43","src/indirect_validation/utils.rs":"e6a3b636dd71ff6b01d5abd5a589a0136fb30aa1d517a43f45cf2e5ad54da245","src/indirect_validation/validate_draw.wgsl":"35a34174ac4a61b9684283878eb42468c1843b6778114bff3ef4dc40976e05d7","src/init_tracker/buffer.rs":"6167a400ab271ba857f1c507e60a46fbd318c185aff87eecf7eb05f7f09b6963","src/init_tracker/mod.rs":"38773a6e51c165d8e54f1ab56f2a0c20c3a126ac3cb19733ea8b423fc305e214","src/init_tracker/texture.rs":"ffdc67d4be23bcd48b22945de94ac0ea8ee571f91eb6d00323b9afe6fa91eef3","src/instance.rs":"f75b9ab96fb6eceab095412789eae89c03deeed45a8bb6f042864f395eb50e8d","src/lib.rs":"57d2562e33b04113cc6c2ca3bc9a215ec779a291be82b680ff037fac7d7a8a15","src/lock/mod.rs":"8d3ae3f8d004d7f7d8a3aefe9f30b35669cb8e2409f5fba27b1fcb116b2429c4","src/lock/observing.rs":"723d57ff30b2abba64e65baf7523f58eecd794408d25e455923c2b293a6689ed","src/lock/rank.rs":"64b554c2c0996b9e5817e2cab49a4b46b9b8e7147873fad045c1b1031caa25db","src/lock/ranked.rs":"a95d6bf7f2ef510047a4c33687076beccf38a0148aac3261bd29fa7555e3f488","src/lock/vanilla.rs":"ca8156d4c981473d437db1056487a44c714760d685819eaff8cf82fb0098a608","src/pipeline.rs":"c602c3ee32442f416e3209788ed5768ea39dc6b0c52d66e419b2ad3d3e0fefab","src/pipeline_cache.rs":"96a7d2a5decf61a2906fe38f73377c9b785490a9510ee51eae553aeeaef799dc","src/pool.rs":"e11bfdc73a66321d26715465fa74657dcd26a9b856b80b8369b4aac2132a4295","src/present.rs":"c978a5cb832bee668e94d96ed0b1fca481b5ed3c34236c75518857fb124883e6","src/ray_tracing.rs":"ae43907290f003f6247bb599927401bd768865f7773a41c327dc73fade014ede","src/registry.rs":"2a76c6397998d263b6f6347299f04a8d27ea4df7dda200e98f205cfa3850dadb","src/resource.rs":"ca81d7f4b82669c034ddd8a5de5ba20cd3777284bef86a5a78e5cffd7e30dc1c","src/scratch.rs":"ea5c40e4d18a12f09cc1038f2dcdddb69b13e99275ac987d826658229a39b326","src/snatch.rs":"bf422810afd952894e365cd397763d42d6365ce3c5a5b4c1170566432f462939","src/storage.rs":"1a5bbf125a1cf65a36d8580e426ef1847c1638003fea0c6f76e309f5923b7692","src/timestamp_normalization/common.wgsl":"9f65aef0526ff9dde945fae70cef064ad961b0aee4291759ae82974cd2ead0a7","src/timestamp_normalization/mod.rs":"4fb7a4d6c53797edc9dd3893a8e25d4efeff14c4846a8927d865101a6d7594a2","src/timestamp_normalization/timestamp_normalization.wgsl":"c0225bf02fdd741542bd20664a6d9195b91936e6f7758c9c4c0ac05b08122e79","src/track/blas.rs":"18c7b5b89a60ab49bbc0f4f8b85a24502c1d968714ef4c586095e119848d902a","src/track/buffer.rs":"7f2393d16d0e8f624327c7a3a1de7176f945f3d33bfd3e12640faddc5c2c9f83","src/track/metadata.rs":"29d8ada9486ac6234ef9de6e7e5ada9cb81ac0db1289dfef905ce1d46c9bbfc6","src/track/mod.rs":"c28de55e31cdde3feb067945a04446dc5343a39418c4b9c2c76148172e7ba855","src/track/range.rs":"2688b05a0c6e8510ff6ba3a9623e8b83f433a05ba743129928c56c93d9a9c233","src/track/stateless.rs":"3db699f5f48a319fa07fb16cdf51e1623d6ecac7a476467ee366e014ea665b89","src/track/texture.rs":"34e72a20364d3ce642c21b29a089811503aa2fb4e7dab1a1e20d8ddd598742d7","src/validation.rs":"70e77edeb901bbaa4eed33bc451f1c856d3515027628b0f7b144d8cbeb060fe0","src/validation/shader_io_deductions.rs":"98f08f0b29570b65c62510b8a66055696b8797ce256ed7c62e282b101cc32e4b","src/weak_vec.rs":"a4193add5912b91226a3155cc613365b7fafdf2e7929d21d68bc19d149696e85"},"package":null}
|
|
diff --git a/third_party/rust/wgpu-core/Cargo.toml b/third_party/rust/wgpu-core/Cargo.toml
|
|
index 468e6cb..9e27540 100644
|
|
--- a/third_party/rust/wgpu-core/Cargo.toml
|
|
+++ b/third_party/rust/wgpu-core/Cargo.toml
|
|
@@ -11,7 +11,7 @@
|
|
|
|
[package]
|
|
edition = "2021"
|
|
-rust-version = "1.90.0"
|
|
+rust-version = "1.89.0"
|
|
name = "wgpu-core"
|
|
version = "28.0.0"
|
|
authors = ["gfx-rs developers"]
|
|
diff --git a/third_party/rust/wgpu-hal/.cargo-checksum.json b/third_party/rust/wgpu-hal/.cargo-checksum.json
|
|
index eb85ccd..79b4dd7 100644
|
|
--- a/third_party/rust/wgpu-hal/.cargo-checksum.json
|
|
+++ b/third_party/rust/wgpu-hal/.cargo-checksum.json
|
|
@@ -1 +1 @@
|
|
-{"files":{"Cargo.toml":"4880b994ea5185146ddd956d393ca977cf645c2633f263dc08cadbb3951c23ad","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"cf9e84804a635e4a8a9fefc596be9da6bf7354dde0d105e27d56a12cb20dd8e3","build.rs":"92e5ba25cb39fb1eb568ffc84e417d5f272a52a4f7128488c42c26f1f0428a7e","examples/halmark/main.rs":"71e83a4d9759adc8073a137b136a5c18d6914946d7005b0feb2abffd632e8691","examples/halmark/shader.wgsl":"26c256ec36d6f0e9a1647431ca772766bee4382d64eaa718ba7b488dcfb6bcca","examples/raw-gles.em.html":"70fbe68394a1a4522192de1dcfaf7d399f60d7bdf5de70b708f9bb0417427546","examples/raw-gles.rs":"7583874835f178f49c9784f669e53fd22256d06d8b2d0fd8d284b09d0eb56925","examples/ray-traced-triangle/main.rs":"ed7b940951b2dc91b7ebedbe0f7784c6cfe43bafe3ef818880a5541efb6f9fbc","examples/ray-traced-triangle/shader.wgsl":"90a66ffa57a642fd806a5b3c96347448158cd562d8951b5afd067bfd0b3d1e98","src/auxil/dxgi/conv.rs":"3ca856c93916c0be714924ff077aa1f366be5557cc164210154d252e7e49fb77","src/auxil/dxgi/exception.rs":"0eafc977390cf76b6ab92697a60de05b8fd61fbad5f3d3ea0649d6e93777e1bc","src/auxil/dxgi/factory.rs":"81e479e550a09127384d8080e43d5f5bae8e8dda6082fe41a87bea8f872eb0f1","src/auxil/dxgi/mod.rs":"e6c5cc3b73bb97742135d6f35308c42f0822304764978fb8dabb0e848863352a","src/auxil/dxgi/name.rs":"ff942da0da1a497ee4d2be21604f7ba9fae963588105b3d1f63aae1a0c536e82","src/auxil/dxgi/result.rs":"e7a9dfb48d8ef8cbe58b28b1ace5caf7818ee50505ba3220bb0509e66ae469b7","src/auxil/dxgi/time.rs":"b6911800be3873cbe277b2534b3839c6f005f3d9a09341aace4752e207d584a2","src/auxil/mod.rs":"dd6cf4ea2e2f9aa4f84f518a9c8bf541e0c4e51a59a5d5dd2600443044d8d579","src/auxil/renderdoc.rs":"94898f747476e269b2910d42e769f2bbb6be0cb466ad92f9d381f55799d2756e","src/dx12/adapter.rs":"9b71f72c3bf47b22df0d1e47f281416da40b47f9d3b107485d8d80b31ca77c5b","src/dx12/command.rs":"bd615e009cdce641155fb2f2c2112080385a7bf8ac6676ea1ef0b2f27b21eeb4","src/dx12/conv.rs":"a320fca45fd1990762ff10dad1d8bbb29833d9b693b0887bf2898021a737612c","src/dx12/dcomp.rs":"053068fbd393a4b8610c7070a72e5887f0fe09b61d35d2be806083d800b48b08","src/dx12/descriptor.rs":"ccd4feb6bd3e0a0ffc26142f8a81fca26180d0f50146b6eb2f670cbc89ea7064","src/dx12/device.rs":"65f6332bb01d1099b096a9030a427609ff040980366920f6da97ad7fcdd59ba0","src/dx12/instance.rs":"040af8d59d15752d2e7967584a28a8f6d50d14c21c023e5df7cef0aca5d86cf2","src/dx12/mod.rs":"44fdc829d9ede4820211d40706e63beec2f1cb556e9642cd7dd0661156aa56dc","src/dx12/pipeline_desc.rs":"631c72108f6735debe9f7059e22574ad50b11aca4dc0ca804e6d89b1373d19ff","src/dx12/sampler.rs":"d18d243efe4fa667dbab5b75b5b91d47de94d441976d9f44a46a2b49ba38473d","src/dx12/shader_compilation.rs":"a0ce9ca4b9143715ffc4b45a56a18182d54b118161553173c1a546cc6041560c","src/dx12/suballocation.rs":"3abbde338015079fe366c5b76bd155b2c41b31ea5b44b7a67ad42f2c43545239","src/dx12/types.rs":"3fc7619fc09303eb3c936d4ded6889f94ce9e8b9aa62742ce900baa1b1e1cca7","src/dx12/view.rs":"79b3f7331d9795e60f9b53023cbf0df46c3a05b1e8bd5c7bcca8acdd235b124f","src/dynamic/adapter.rs":"e93f7d082a3950c9e8ccff8a631d251c7598b4b25dda9fe6347dadfa3ba07829","src/dynamic/command.rs":"90cb8c795af62a39a4488659dc5d482e8738a494a975d123bcd764cdaecebfc6","src/dynamic/device.rs":"d521f90344bfe54538888a8649500c748d656b1b7668acf4f56af6e17461e83a","src/dynamic/instance.rs":"7b515c201e1ca24f24439544dbfa1d19ea1412a4f89bd803e009aed13b021e55","src/dynamic/mod.rs":"2577d3aef6441f5b42b427d80ba3cf7fee2a97b2fc12335a1fba383e8a79a9b2","src/dynamic/queue.rs":"d76abb4797e90253386d24584f186dbe1909e772560156b2e891fa043cfefbdc","src/dynamic/surface.rs":"4328c2fe86931f50aa00ac3d6982d0879b774eebf7a507903d1b1898c891fb4d","src/gles/adapter.rs":"996975f5d664094b1b72edf1a6784b69e5d54da296a5b0e6d52eebcb8ba0a36c","src/gles/command.rs":"fc27f7d4370c8e84879ceb5efd2e41cc93a9c92309adddd8fe6ecedbb24696c7","src/gles/conv.rs":"1013e1e48bc6b5b0df60a026251b97653528b112600eb3f8d4e905dbf791d897","src/gles/device.rs":"c2be98d957f8a13689bb23b16300f9deb6c1d7def016ef414c0592aa2d2ab40d","src/gles/egl.rs":"38c4af6be2e25fd755adcd71db770cbeef0ecd904f8d1178358ce6d1b9e51ec6","src/gles/emscripten.rs":"316d2bb6f2a4bb126dbe68a223f7393399080d116b61c39504454acdf4f9cfaf","src/gles/fence.rs":"a2e7b6abd2fd4a438de90b9f58452c64cd8bba83999c90fd6390e3db128b9c6c","src/gles/mod.rs":"0276e57149e6cad792369a10cfdaec25f01b3e0149b25686f6687f285f700cfe","src/gles/queue.rs":"949c132a5e7ebc65b5da1b007f90503fd9d080021b3335c884b556b120c150ab","src/gles/shaders/clear.frag":"9133ed8ed97d3641fbb6b5f5ea894a3554c629ccc1b80a5fc9221d7293aa1954","src/gles/shaders/clear.vert":"a543768725f4121ff2e9e1fb5b00644931e9d6f2f946c0ef01968afb5a135abd","src/gles/shaders/srgb_present.frag":"dd9a43c339a2fa4ccf7f6a1854c6f400cabf271a7d5e9230768e9f39d47f3ff5","src/gles/shaders/srgb_present.vert":"6e85d489403d80b81cc94790730bb53b309dfc5eeede8f1ea3412a660f31d357","src/gles/web.rs":"7ce662d1cab08f92e2ecac4a4407ba037c80f9ac2c953f71ac4e53d33b736a37","src/gles/wgl.rs":"61082a0139d34d5f06906477f80727a01fba094181223725d5ded2d7d1a8992a","src/lib.rs":"fbed3228d49cec7d9055e6a22c930036b0dfede6ff50ff964fe84db463fa603f","src/metal/adapter.rs":"c708c6f84587a562615d8e5b4e9ed1acf91a19efc46fa97ea1356820a17cfd2f","src/metal/command.rs":"4f83738e9b87907b9b40fc016c395402a4c6c48faf1ba7e6e21add13d3446e09","src/metal/conv.rs":"0b8c6e0b3ac4137206aeb6cdb8f0fe6b033df335fbe671d722d2aad04b49ceab","src/metal/device.rs":"ff3ee1bea16381f696d6289f0f7a6bbcca6ea3e19ff3be913b4eb3040208d928","src/metal/mod.rs":"845ed8d651203b9123d4f4512feae7d2f3f5abed5be859aa0d3b2145b829afce","src/metal/surface.rs":"5f5f2d10e0674b6729783d4549666a3704fd69aebf5fe617acd916912f21c9ae","src/metal/time.rs":"c32d69f30e846dfcc0e39e01097fb80df63b2bebb6586143bb62494999850246","src/noop/buffer.rs":"b5edc5e2c52287dfbd4f619e36097ac233041eb9ab287b889b6ee477d740fa09","src/noop/command.rs":"2b6c04bb4cd7b7a1f40433266767698e01ed725a9cec42a6c16834c3a369cc67","src/noop/mod.rs":"97b17b0b20db1ec4fb43dec3c7dac73f20c2823cb324cd9c948c469220aff70e","src/validation_canary.rs":"2e8f84e5f85671b3e55ddd410476171c762e34cbea315b37921cbb6ff18bfb4f","src/vulkan/adapter.rs":"3414185bf0d12fda67a5007d4f32f784b77586e744a58f87be6b1b7239fc15c2","src/vulkan/command.rs":"b00b8858363f62b346029e4d67a0cee8b92423af632c903b7151f0f32da487a5","src/vulkan/conv.rs":"237289e3a9403a194482559d9f361c7758e35c61bc916283c2fa7d79081b15fc","src/vulkan/device.rs":"4b849b404e5277909ee81b0e317facacdc18cc066e0177c62be52cb152544ee1","src/vulkan/drm.rs":"45f7bf1dd854688a65261e4674d80f90c997b193a162fd2ae658acf4e2003552","src/vulkan/instance.rs":"f75ced5a603f6f63ba0c8f5dd34636708c53248db9002ae43a60c8b0b7dabbc7","src/vulkan/mod.rs":"5b822bb0a8b493bea3f7b30fe7dd42a4793ffe04fbb8546b231ec3db828e9eff","src/vulkan/sampler.rs":"f65729d6df5cce681b7756b3e48074017f0c7f42da69ca55e26cc723cd14ad59","src/vulkan/semaphore_list.rs":"6e548d810d75daf5ed31b6e520ece32c8ef97e4b66926c17f0d4317f355802e5","src/vulkan/swapchain/mod.rs":"1baef6ef36d005fe03b27ea15a91d1c5c7114eb7f777a50e67ca5f448a53291b","src/vulkan/swapchain/native.rs":"f3bd46ad44f25cf07da44a54a7fc656d0880436dad79eef9c06bd8cc85075455"},"package":null}
|
|
\ No newline at end of file
|
|
+{"files":{"Cargo.toml":"8a4f2ae93321b93350c1796c6a6259b2a2d10646b74e0ae8292018f2ebe05743","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"cf9e84804a635e4a8a9fefc596be9da6bf7354dde0d105e27d56a12cb20dd8e3","build.rs":"92e5ba25cb39fb1eb568ffc84e417d5f272a52a4f7128488c42c26f1f0428a7e","examples/halmark/main.rs":"71e83a4d9759adc8073a137b136a5c18d6914946d7005b0feb2abffd632e8691","examples/halmark/shader.wgsl":"26c256ec36d6f0e9a1647431ca772766bee4382d64eaa718ba7b488dcfb6bcca","examples/raw-gles.em.html":"70fbe68394a1a4522192de1dcfaf7d399f60d7bdf5de70b708f9bb0417427546","examples/raw-gles.rs":"7583874835f178f49c9784f669e53fd22256d06d8b2d0fd8d284b09d0eb56925","examples/ray-traced-triangle/main.rs":"ed7b940951b2dc91b7ebedbe0f7784c6cfe43bafe3ef818880a5541efb6f9fbc","examples/ray-traced-triangle/shader.wgsl":"90a66ffa57a642fd806a5b3c96347448158cd562d8951b5afd067bfd0b3d1e98","src/auxil/dxgi/conv.rs":"3ca856c93916c0be714924ff077aa1f366be5557cc164210154d252e7e49fb77","src/auxil/dxgi/exception.rs":"0eafc977390cf76b6ab92697a60de05b8fd61fbad5f3d3ea0649d6e93777e1bc","src/auxil/dxgi/factory.rs":"81e479e550a09127384d8080e43d5f5bae8e8dda6082fe41a87bea8f872eb0f1","src/auxil/dxgi/mod.rs":"e6c5cc3b73bb97742135d6f35308c42f0822304764978fb8dabb0e848863352a","src/auxil/dxgi/name.rs":"ff942da0da1a497ee4d2be21604f7ba9fae963588105b3d1f63aae1a0c536e82","src/auxil/dxgi/result.rs":"e7a9dfb48d8ef8cbe58b28b1ace5caf7818ee50505ba3220bb0509e66ae469b7","src/auxil/dxgi/time.rs":"b6911800be3873cbe277b2534b3839c6f005f3d9a09341aace4752e207d584a2","src/auxil/mod.rs":"dd6cf4ea2e2f9aa4f84f518a9c8bf541e0c4e51a59a5d5dd2600443044d8d579","src/auxil/renderdoc.rs":"94898f747476e269b2910d42e769f2bbb6be0cb466ad92f9d381f55799d2756e","src/dx12/adapter.rs":"9b71f72c3bf47b22df0d1e47f281416da40b47f9d3b107485d8d80b31ca77c5b","src/dx12/command.rs":"bd615e009cdce641155fb2f2c2112080385a7bf8ac6676ea1ef0b2f27b21eeb4","src/dx12/conv.rs":"a320fca45fd1990762ff10dad1d8bbb29833d9b693b0887bf2898021a737612c","src/dx12/dcomp.rs":"053068fbd393a4b8610c7070a72e5887f0fe09b61d35d2be806083d800b48b08","src/dx12/descriptor.rs":"ccd4feb6bd3e0a0ffc26142f8a81fca26180d0f50146b6eb2f670cbc89ea7064","src/dx12/device.rs":"65f6332bb01d1099b096a9030a427609ff040980366920f6da97ad7fcdd59ba0","src/dx12/instance.rs":"040af8d59d15752d2e7967584a28a8f6d50d14c21c023e5df7cef0aca5d86cf2","src/dx12/mod.rs":"44fdc829d9ede4820211d40706e63beec2f1cb556e9642cd7dd0661156aa56dc","src/dx12/pipeline_desc.rs":"631c72108f6735debe9f7059e22574ad50b11aca4dc0ca804e6d89b1373d19ff","src/dx12/sampler.rs":"d18d243efe4fa667dbab5b75b5b91d47de94d441976d9f44a46a2b49ba38473d","src/dx12/shader_compilation.rs":"a0ce9ca4b9143715ffc4b45a56a18182d54b118161553173c1a546cc6041560c","src/dx12/suballocation.rs":"3abbde338015079fe366c5b76bd155b2c41b31ea5b44b7a67ad42f2c43545239","src/dx12/types.rs":"3fc7619fc09303eb3c936d4ded6889f94ce9e8b9aa62742ce900baa1b1e1cca7","src/dx12/view.rs":"79b3f7331d9795e60f9b53023cbf0df46c3a05b1e8bd5c7bcca8acdd235b124f","src/dynamic/adapter.rs":"e93f7d082a3950c9e8ccff8a631d251c7598b4b25dda9fe6347dadfa3ba07829","src/dynamic/command.rs":"90cb8c795af62a39a4488659dc5d482e8738a494a975d123bcd764cdaecebfc6","src/dynamic/device.rs":"d521f90344bfe54538888a8649500c748d656b1b7668acf4f56af6e17461e83a","src/dynamic/instance.rs":"7b515c201e1ca24f24439544dbfa1d19ea1412a4f89bd803e009aed13b021e55","src/dynamic/mod.rs":"2577d3aef6441f5b42b427d80ba3cf7fee2a97b2fc12335a1fba383e8a79a9b2","src/dynamic/queue.rs":"d76abb4797e90253386d24584f186dbe1909e772560156b2e891fa043cfefbdc","src/dynamic/surface.rs":"4328c2fe86931f50aa00ac3d6982d0879b774eebf7a507903d1b1898c891fb4d","src/gles/adapter.rs":"996975f5d664094b1b72edf1a6784b69e5d54da296a5b0e6d52eebcb8ba0a36c","src/gles/command.rs":"fc27f7d4370c8e84879ceb5efd2e41cc93a9c92309adddd8fe6ecedbb24696c7","src/gles/conv.rs":"1013e1e48bc6b5b0df60a026251b97653528b112600eb3f8d4e905dbf791d897","src/gles/device.rs":"c2be98d957f8a13689bb23b16300f9deb6c1d7def016ef414c0592aa2d2ab40d","src/gles/egl.rs":"38c4af6be2e25fd755adcd71db770cbeef0ecd904f8d1178358ce6d1b9e51ec6","src/gles/emscripten.rs":"316d2bb6f2a4bb126dbe68a223f7393399080d116b61c39504454acdf4f9cfaf","src/gles/fence.rs":"a2e7b6abd2fd4a438de90b9f58452c64cd8bba83999c90fd6390e3db128b9c6c","src/gles/mod.rs":"0276e57149e6cad792369a10cfdaec25f01b3e0149b25686f6687f285f700cfe","src/gles/queue.rs":"949c132a5e7ebc65b5da1b007f90503fd9d080021b3335c884b556b120c150ab","src/gles/shaders/clear.frag":"9133ed8ed97d3641fbb6b5f5ea894a3554c629ccc1b80a5fc9221d7293aa1954","src/gles/shaders/clear.vert":"a543768725f4121ff2e9e1fb5b00644931e9d6f2f946c0ef01968afb5a135abd","src/gles/shaders/srgb_present.frag":"dd9a43c339a2fa4ccf7f6a1854c6f400cabf271a7d5e9230768e9f39d47f3ff5","src/gles/shaders/srgb_present.vert":"6e85d489403d80b81cc94790730bb53b309dfc5eeede8f1ea3412a660f31d357","src/gles/web.rs":"7ce662d1cab08f92e2ecac4a4407ba037c80f9ac2c953f71ac4e53d33b736a37","src/gles/wgl.rs":"61082a0139d34d5f06906477f80727a01fba094181223725d5ded2d7d1a8992a","src/lib.rs":"fbed3228d49cec7d9055e6a22c930036b0dfede6ff50ff964fe84db463fa603f","src/metal/adapter.rs":"c708c6f84587a562615d8e5b4e9ed1acf91a19efc46fa97ea1356820a17cfd2f","src/metal/command.rs":"4f83738e9b87907b9b40fc016c395402a4c6c48faf1ba7e6e21add13d3446e09","src/metal/conv.rs":"0b8c6e0b3ac4137206aeb6cdb8f0fe6b033df335fbe671d722d2aad04b49ceab","src/metal/device.rs":"ff3ee1bea16381f696d6289f0f7a6bbcca6ea3e19ff3be913b4eb3040208d928","src/metal/mod.rs":"845ed8d651203b9123d4f4512feae7d2f3f5abed5be859aa0d3b2145b829afce","src/metal/surface.rs":"5f5f2d10e0674b6729783d4549666a3704fd69aebf5fe617acd916912f21c9ae","src/metal/time.rs":"c32d69f30e846dfcc0e39e01097fb80df63b2bebb6586143bb62494999850246","src/noop/buffer.rs":"b5edc5e2c52287dfbd4f619e36097ac233041eb9ab287b889b6ee477d740fa09","src/noop/command.rs":"2b6c04bb4cd7b7a1f40433266767698e01ed725a9cec42a6c16834c3a369cc67","src/noop/mod.rs":"97b17b0b20db1ec4fb43dec3c7dac73f20c2823cb324cd9c948c469220aff70e","src/validation_canary.rs":"2e8f84e5f85671b3e55ddd410476171c762e34cbea315b37921cbb6ff18bfb4f","src/vulkan/adapter.rs":"3414185bf0d12fda67a5007d4f32f784b77586e744a58f87be6b1b7239fc15c2","src/vulkan/command.rs":"b00b8858363f62b346029e4d67a0cee8b92423af632c903b7151f0f32da487a5","src/vulkan/conv.rs":"237289e3a9403a194482559d9f361c7758e35c61bc916283c2fa7d79081b15fc","src/vulkan/device.rs":"4b849b404e5277909ee81b0e317facacdc18cc066e0177c62be52cb152544ee1","src/vulkan/drm.rs":"45f7bf1dd854688a65261e4674d80f90c997b193a162fd2ae658acf4e2003552","src/vulkan/instance.rs":"f75ced5a603f6f63ba0c8f5dd34636708c53248db9002ae43a60c8b0b7dabbc7","src/vulkan/mod.rs":"5b822bb0a8b493bea3f7b30fe7dd42a4793ffe04fbb8546b231ec3db828e9eff","src/vulkan/sampler.rs":"f65729d6df5cce681b7756b3e48074017f0c7f42da69ca55e26cc723cd14ad59","src/vulkan/semaphore_list.rs":"6e548d810d75daf5ed31b6e520ece32c8ef97e4b66926c17f0d4317f355802e5","src/vulkan/swapchain/mod.rs":"1baef6ef36d005fe03b27ea15a91d1c5c7114eb7f777a50e67ca5f448a53291b","src/vulkan/swapchain/native.rs":"f3bd46ad44f25cf07da44a54a7fc656d0880436dad79eef9c06bd8cc85075455"},"package":null}
|
|
diff --git a/third_party/rust/wgpu-hal/Cargo.toml b/third_party/rust/wgpu-hal/Cargo.toml
|
|
index b903238..e468c73 100644
|
|
--- a/third_party/rust/wgpu-hal/Cargo.toml
|
|
+++ b/third_party/rust/wgpu-hal/Cargo.toml
|
|
@@ -11,7 +11,7 @@
|
|
|
|
[package]
|
|
edition = "2021"
|
|
-rust-version = "1.90.0"
|
|
+rust-version = "1.89.0"
|
|
name = "wgpu-hal"
|
|
version = "28.0.0"
|
|
authors = ["gfx-rs developers"]
|
|
diff --git a/third_party/rust/wgpu-types/.cargo-checksum.json b/third_party/rust/wgpu-types/.cargo-checksum.json
|
|
index e20a0c5..98fcce1 100644
|
|
--- a/third_party/rust/wgpu-types/.cargo-checksum.json
|
|
+++ b/third_party/rust/wgpu-types/.cargo-checksum.json
|
|
@@ -1 +1 @@
|
|
-{"files":{"Cargo.toml":"02248f64628e131d8fc3e981dea17a6501ac629f0f20f7848fbc85e0edfb1757","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","src/adapter.rs":"4be5fe713a0691b15447487d0b6cf3f0c1e84cc9959f6e258b62d7183b944879","src/assertions.rs":"e4d2d40bc1e870a59637f4b9574743e19565a62f6dbcc21cb18a76b666b796eb","src/backend.rs":"cca0b725680cdc601a2735f64da0371b77b4ff741d76c56401866816a07f47e9","src/binding.rs":"e989b0bd3d9b685f8a664682c0d000e93d7fcd4f02dc6776365b0777178c748c","src/buffer.rs":"bc1d2976e3d54b81686f4597db7155d40d806a2b97d0eeb291bbaabf4b1eaefb","src/cast_utils.rs":"33f03a57ccbedef2699f2305bec584c623db1fd28bfdf584d1260da4fbecd529","src/counters.rs":"e85dc9fa3b52896b35a051de78b2e8d351df5bbf56923aece2d4756c8490fdd0","src/device.rs":"367b952adbe146a54abe3962c47f508c05e7bab2797d2cc503b104da9693dfd9","src/env.rs":"26ffc91867625784159bcf391881187aa92cf92b81b1f40959ce1b96ae6d554d","src/error.rs":"0109e6209cf152abbfd0cee85dd934fb24f2304bf6adad6fb684b77f151fb158","src/features.rs":"8c88ded65e0a2958ac448c3cb7267f48c0efa3bbfdd70463350cba65c1d25e63","src/instance.rs":"266b004e388a566ea43d4c202e6b43ed2c43c4f4d09c4948952b1721ee6dcf91","src/lib.rs":"4e9e917a99af5f2a454e5aba09ccc4708bb0ea68938f818d1d357467f31070d8","src/limits.rs":"83e00e79ff98e276f5ce33ff18a441ebbde123f79936aadc0763243e6933d5e6","src/math.rs":"916d78724b50ed6e9f84240e0aa19b0afc886e21a1b18428ca6ace5a1e6cc80c","src/origin_extent.rs":"31a6956c59c86046aac284bcd6b2d65462554db4ee6552b8fa0f660838113f97","src/ray_tracing.rs":"349245d907020947a40b99fc8fe78b2d0a34ddce6190415284aec2c37d6ba4e2","src/render.rs":"206cc471da7650e72a0d8e2d5b856e48c162f76acd422f9a735e32d3b5125352","src/send_sync.rs":"8d1db3a9b78eecab2e082751aea3b249dbd1a22a6274fe3cebc5384280dd474e","src/shader.rs":"8b97cc9fd5f43410878cd5c81fea1e1b14a815f9054fc946b248e64fa5396c1a","src/surface.rs":"6609fa1ff03da5c537657ceaefe311bb650b0d199f1164167c38962c053fea54","src/texture.rs":"ed85930050d64b0fd9b0629d12f7797cea9583ddf74ef844f9e14b0de866b9bb","src/texture/external_image.rs":"2bb94e9f8c2f7d9df92b320c2dcc628e4a681204b32a8fbcf4da7f0ee32da9da","src/texture/external_texture.rs":"c4be6cd9f352141f72ae0dfbc4a2baa0995bbe968c9973c7067a2a879542eb3a","src/texture/format.rs":"771ae2bcac55ea8336ae86fed5f1eff9b7911f1b6587ef68d6d38972ce4ac625","src/tokens.rs":"db51d2ea67b9ba65347197db69b87202bfc6863104a44b10abb246139dcccb8c","src/transfers.rs":"25f47e9cbc5887f849f5eb4d8952d89de6377df40f480ebbea61c58d2e0e7fc6","src/vertex.rs":"3c66086cb02edbaf7a36b0b62b6e022e8f81333db20d80fa892ce2fc84da9814"},"package":null}
|
|
\ No newline at end of file
|
|
+{"files":{"Cargo.toml":"ba1a544586a3de3ade37e5758b5ee33e27936ac2f2c4faf9b6a0fae77ed3f645","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","src/adapter.rs":"4be5fe713a0691b15447487d0b6cf3f0c1e84cc9959f6e258b62d7183b944879","src/assertions.rs":"e4d2d40bc1e870a59637f4b9574743e19565a62f6dbcc21cb18a76b666b796eb","src/backend.rs":"cca0b725680cdc601a2735f64da0371b77b4ff741d76c56401866816a07f47e9","src/binding.rs":"e989b0bd3d9b685f8a664682c0d000e93d7fcd4f02dc6776365b0777178c748c","src/buffer.rs":"bc1d2976e3d54b81686f4597db7155d40d806a2b97d0eeb291bbaabf4b1eaefb","src/cast_utils.rs":"33f03a57ccbedef2699f2305bec584c623db1fd28bfdf584d1260da4fbecd529","src/counters.rs":"e85dc9fa3b52896b35a051de78b2e8d351df5bbf56923aece2d4756c8490fdd0","src/device.rs":"367b952adbe146a54abe3962c47f508c05e7bab2797d2cc503b104da9693dfd9","src/env.rs":"26ffc91867625784159bcf391881187aa92cf92b81b1f40959ce1b96ae6d554d","src/error.rs":"0109e6209cf152abbfd0cee85dd934fb24f2304bf6adad6fb684b77f151fb158","src/features.rs":"8c88ded65e0a2958ac448c3cb7267f48c0efa3bbfdd70463350cba65c1d25e63","src/instance.rs":"266b004e388a566ea43d4c202e6b43ed2c43c4f4d09c4948952b1721ee6dcf91","src/lib.rs":"4e9e917a99af5f2a454e5aba09ccc4708bb0ea68938f818d1d357467f31070d8","src/limits.rs":"83e00e79ff98e276f5ce33ff18a441ebbde123f79936aadc0763243e6933d5e6","src/math.rs":"916d78724b50ed6e9f84240e0aa19b0afc886e21a1b18428ca6ace5a1e6cc80c","src/origin_extent.rs":"31a6956c59c86046aac284bcd6b2d65462554db4ee6552b8fa0f660838113f97","src/ray_tracing.rs":"349245d907020947a40b99fc8fe78b2d0a34ddce6190415284aec2c37d6ba4e2","src/render.rs":"206cc471da7650e72a0d8e2d5b856e48c162f76acd422f9a735e32d3b5125352","src/send_sync.rs":"8d1db3a9b78eecab2e082751aea3b249dbd1a22a6274fe3cebc5384280dd474e","src/shader.rs":"8b97cc9fd5f43410878cd5c81fea1e1b14a815f9054fc946b248e64fa5396c1a","src/surface.rs":"6609fa1ff03da5c537657ceaefe311bb650b0d199f1164167c38962c053fea54","src/texture.rs":"ed85930050d64b0fd9b0629d12f7797cea9583ddf74ef844f9e14b0de866b9bb","src/texture/external_image.rs":"2bb94e9f8c2f7d9df92b320c2dcc628e4a681204b32a8fbcf4da7f0ee32da9da","src/texture/external_texture.rs":"c4be6cd9f352141f72ae0dfbc4a2baa0995bbe968c9973c7067a2a879542eb3a","src/texture/format.rs":"771ae2bcac55ea8336ae86fed5f1eff9b7911f1b6587ef68d6d38972ce4ac625","src/tokens.rs":"db51d2ea67b9ba65347197db69b87202bfc6863104a44b10abb246139dcccb8c","src/transfers.rs":"25f47e9cbc5887f849f5eb4d8952d89de6377df40f480ebbea61c58d2e0e7fc6","src/vertex.rs":"3c66086cb02edbaf7a36b0b62b6e022e8f81333db20d80fa892ce2fc84da9814"},"package":null}
|
|
diff --git a/third_party/rust/wgpu-types/Cargo.toml b/third_party/rust/wgpu-types/Cargo.toml
|
|
index db015c4..2e2b0c1 100644
|
|
--- a/third_party/rust/wgpu-types/Cargo.toml
|
|
+++ b/third_party/rust/wgpu-types/Cargo.toml
|
|
@@ -11,7 +11,7 @@
|
|
|
|
[package]
|
|
edition = "2021"
|
|
-rust-version = "1.90.0"
|
|
+rust-version = "1.89.0"
|
|
name = "wgpu-types"
|
|
version = "28.0.0"
|
|
authors = ["gfx-rs developers"]
|
|
diff --git a/toolkit/components/processtools/ProcInfo_haiku.cpp b/toolkit/components/processtools/ProcInfo_haiku.cpp
|
|
new file mode 100644
|
|
index 0000000..6c08732
|
|
--- /dev/null
|
|
+++ b/toolkit/components/processtools/ProcInfo_haiku.cpp
|
|
@@ -0,0 +1,90 @@
|
|
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
+
|
|
+#include "mozilla/ProcInfo.h"
|
|
+
|
|
+#include <kernel/OS.h>
|
|
+
|
|
+namespace mozilla {
|
|
+
|
|
+nsresult GetCurrentProcessMemoryUsage(uint64_t* aResult) {
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+}
|
|
+
|
|
+int GetCycleTimeFrequencyMHz() { return 0; }
|
|
+
|
|
+nsresult GetCpuTimeSinceProcessStartInMs(uint64_t* aResult) {
|
|
+ team_usage_info usage;
|
|
+ if (B_OK != get_team_usage_info(B_CURRENT_TEAM, B_TEAM_USAGE_SELF, &usage)) {
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+ const bigtime_t microseconds = usage.user_time + usage.kernel_time;
|
|
+ *aResult = microseconds / 1000;
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+nsresult GetGpuTimeSinceProcessStartInMs(uint64_t* aResult) {
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+}
|
|
+
|
|
+ProcInfoPromise::ResolveOrRejectValue GetProcInfoSync(
|
|
+ nsTArray<ProcInfoRequest>&& aRequests) {
|
|
+ ProcInfoPromise::ResolveOrRejectValue result;
|
|
+
|
|
+ HashMap<base::ProcessId, ProcInfo> gathered;
|
|
+ if (!gathered.reserve(aRequests.Length())) {
|
|
+ result.SetReject(NS_ERROR_OUT_OF_MEMORY);
|
|
+ return result;
|
|
+ }
|
|
+ for (const auto& request : aRequests) {
|
|
+ ProcInfo info;
|
|
+
|
|
+ team_usage_info usage;
|
|
+ if (B_OK != get_team_usage_info(request.pid, B_TEAM_USAGE_SELF, &usage)) {
|
|
+ continue;
|
|
+ }
|
|
+ const bigtime_t microseconds = usage.user_time + usage.kernel_time;
|
|
+ const uint64_t nanoseconds = microseconds * 1000;
|
|
+ info.cpuTime = nanoseconds;
|
|
+
|
|
+ info.memory = 0;
|
|
+ ssize_t cookie_area = 0;
|
|
+ area_info area;
|
|
+ while (B_OK == get_next_area_info(request.pid, &cookie_area, &area)) {
|
|
+ info.memory += area.ram_size;
|
|
+ }
|
|
+
|
|
+ info.pid = request.pid;
|
|
+ info.childId = request.childId;
|
|
+ info.type = request.processType;
|
|
+ info.origin = request.origin;
|
|
+ info.windows = std::move(request.windowInfo);
|
|
+ info.utilityActors = std::move(request.utilityInfo);
|
|
+
|
|
+ int32 cookie_thread = 0;
|
|
+ thread_info thread;
|
|
+ while (B_OK == get_next_thread_info(request.pid, &cookie_thread, &thread)) {
|
|
+ const bigtime_t microseconds = thread.user_time + thread.kernel_time;
|
|
+ const uint64_t nanoseconds = microseconds * 1000;
|
|
+
|
|
+ ThreadInfo threadInfo;
|
|
+ threadInfo.tid = thread.thread;
|
|
+ threadInfo.cpuTime = nanoseconds;
|
|
+ info.threads.AppendElement(threadInfo);
|
|
+ }
|
|
+
|
|
+ if (!gathered.put(request.pid, std::move(info))) {
|
|
+ result.SetReject(NS_ERROR_OUT_OF_MEMORY);
|
|
+ return result;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ // ... and we're done!
|
|
+ result.SetResolve(std::move(gathered));
|
|
+ return result;
|
|
+}
|
|
+
|
|
+} // namespace mozilla
|
|
diff --git a/toolkit/components/processtools/moz.build b/toolkit/components/processtools/moz.build
|
|
index d5c0aca..506a7b1 100644
|
|
--- a/toolkit/components/processtools/moz.build
|
|
+++ b/toolkit/components/processtools/moz.build
|
|
@@ -43,6 +43,8 @@ if toolkit == "gtk" or toolkit == "android":
|
|
UNIFIED_SOURCES += ["ProcInfo_bsd.cpp"]
|
|
elif CONFIG["OS_TARGET"] == "SunOS":
|
|
UNIFIED_SOURCES += ["ProcInfo_solaris.cpp"]
|
|
+ elif CONFIG["OS_TARGET"] == "Haiku":
|
|
+ UNIFIED_SOURCES += ["ProcInfo_haiku.cpp"]
|
|
else:
|
|
UNIFIED_SOURCES += ["ProcInfo_linux.cpp"]
|
|
elif toolkit == "windows":
|
|
diff --git a/toolkit/components/remote/RemoteUtils.h b/toolkit/components/remote/RemoteUtils.h
|
|
index 134ed34..fcad6db 100644
|
|
--- a/toolkit/components/remote/RemoteUtils.h
|
|
+++ b/toolkit/components/remote/RemoteUtils.h
|
|
@@ -13,7 +13,7 @@
|
|
# include "WinUtils.h"
|
|
#endif
|
|
|
|
-#if defined XP_WIN || defined XP_MACOSX
|
|
+#if defined XP_WIN || defined XP_MACOSX || defined XP_HAIKU
|
|
static void BuildClassName(const char* aProgram, const char* aProfile,
|
|
nsString& aClassName) {
|
|
// On Windows, the class name is used as the window class.
|
|
@@ -30,6 +30,8 @@ static void BuildClassName(const char* aProgram, const char* aProfile,
|
|
|
|
# if defined XP_WIN
|
|
constexpr size_t ClassNameMaxLength = 256;
|
|
+# elif defined XP_HAIKU
|
|
+ constexpr size_t ClassNameMaxLength = 32;
|
|
# else
|
|
constexpr size_t ClassNameMaxLength = 128;
|
|
# endif
|
|
diff --git a/toolkit/components/remote/moz.build b/toolkit/components/remote/moz.build
|
|
index 4230dfe..f003ea3 100644
|
|
--- a/toolkit/components/remote/moz.build
|
|
+++ b/toolkit/components/remote/moz.build
|
|
@@ -28,7 +28,7 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
"nsUnixRemoteServer.cpp",
|
|
"RemoteUtils.cpp",
|
|
]
|
|
- if CONFIG["MOZ_ENABLE_DBUS"]:
|
|
+ if CONFIG["MOZ_ENABLE_DBUS"] and CONFIG["OS_ARCH"] != "Haiku":
|
|
SOURCES += [
|
|
"nsDBusRemoteClient.cpp",
|
|
"nsDBusRemoteServer.cpp",
|
|
@@ -39,11 +39,22 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
]
|
|
CXXFLAGS += CONFIG["MOZ_DBUS_CFLAGS"]
|
|
else:
|
|
- SOURCES += [
|
|
- "nsGTKRemoteServer.cpp",
|
|
- "nsXRemoteClient.cpp",
|
|
- "nsXRemoteServer.cpp",
|
|
- ]
|
|
+ if CONFIG["OS_ARCH"] == "Haiku":
|
|
+ SOURCES += [
|
|
+ "nsHaikuRemoteClient.cpp",
|
|
+ "nsHaikuRemoteServer.cpp",
|
|
+ ]
|
|
+ EXPORTS += [
|
|
+ "nsUnixRemoteServer.h",
|
|
+ "RemoteUtils.h",
|
|
+ ]
|
|
+ CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
|
+ else:
|
|
+ SOURCES += [
|
|
+ "nsGTKRemoteServer.cpp",
|
|
+ "nsXRemoteClient.cpp",
|
|
+ "nsXRemoteServer.cpp",
|
|
+ ]
|
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
|
|
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
|
|
diff --git a/toolkit/components/remote/nsHaikuRemoteClient.cpp b/toolkit/components/remote/nsHaikuRemoteClient.cpp
|
|
new file mode 100644
|
|
index 0000000..2bec3ce
|
|
--- /dev/null
|
|
+++ b/toolkit/components/remote/nsHaikuRemoteClient.cpp
|
|
@@ -0,0 +1,35 @@
|
|
+#include <vector>
|
|
+#include <string.h>
|
|
+
|
|
+#include "nsHaikuRemoteClient.h"
|
|
+
|
|
+#include "RemoteUtils.h"
|
|
+
|
|
+nsresult nsHaikuRemoteClient::Init() {
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+nsresult nsHaikuRemoteClient::SendCommandLine(const char* aProgram,
|
|
+ const char* aProfile,
|
|
+ int32_t argc,
|
|
+ const char** argv,
|
|
+ bool aRaise) {
|
|
+ nsString className;
|
|
+ BuildClassName(aProgram, aProfile, className);
|
|
+ BString portName;
|
|
+ portName.SetTo(NS_ConvertUTF16toUTF8(className.get()).get());
|
|
+
|
|
+ port_id port = find_port(portName.String());
|
|
+ if (port < 0) {
|
|
+ return NS_ERROR_NOT_AVAILABLE;
|
|
+ }
|
|
+
|
|
+ BString message;
|
|
+ message << (aRaise ? "1" : "0");
|
|
+ for (int i = 0; i < argc; i++) {
|
|
+ message << "|" << argv[i];
|
|
+ }
|
|
+
|
|
+ status_t result = write_port(port, 1, message.String(), message.Length() + 1);
|
|
+ return (result == B_OK) ? NS_OK : NS_ERROR_FAILURE;
|
|
+}
|
|
diff --git a/toolkit/components/remote/nsHaikuRemoteClient.h b/toolkit/components/remote/nsHaikuRemoteClient.h
|
|
new file mode 100644
|
|
index 0000000..de9c0a2
|
|
--- /dev/null
|
|
+++ b/toolkit/components/remote/nsHaikuRemoteClient.h
|
|
@@ -0,0 +1,22 @@
|
|
+#ifndef HAIKU_REMOTE_CLIENT_H
|
|
+#define HAIKU_REMOTE_CLIENT_H
|
|
+
|
|
+#pragma GCC visibility push(default)
|
|
+#include <kernel/OS.h>
|
|
+#include <app/Messenger.h>
|
|
+#include <support/String.h>
|
|
+#pragma GCC visibility pop
|
|
+
|
|
+#include "nsRemoteClient.h"
|
|
+
|
|
+class nsHaikuRemoteClient : public nsRemoteClient {
|
|
+public:
|
|
+ virtual ~nsHaikuRemoteClient() = default;
|
|
+
|
|
+ nsresult Init() override;
|
|
+ nsresult SendCommandLine(const char* aProgram, const char* aProfile,
|
|
+ int32_t argc, const char** argv,
|
|
+ bool aRaise) override;
|
|
+};
|
|
+
|
|
+#endif
|
|
diff --git a/toolkit/components/remote/nsHaikuRemoteServer.cpp b/toolkit/components/remote/nsHaikuRemoteServer.cpp
|
|
new file mode 100644
|
|
index 0000000..aebefa1
|
|
--- /dev/null
|
|
+++ b/toolkit/components/remote/nsHaikuRemoteServer.cpp
|
|
@@ -0,0 +1,107 @@
|
|
+#include "nsHaikuRemoteServer.h"
|
|
+#include "RemoteUtils.h"
|
|
+
|
|
+#include "nsCommandLine.h"
|
|
+#include "nsICommandLineRunner.h"
|
|
+#include "nsICommandLine.h"
|
|
+#include "nsCOMPtr.h"
|
|
+#include "nsThreadUtils.h"
|
|
+
|
|
+#include <unistd.h>
|
|
+
|
|
+nsHaikuRemoteServer::nsHaikuRemoteServer()
|
|
+ : fRunning(false), fPort(B_BAD_PORT_ID) {}
|
|
+
|
|
+nsHaikuRemoteServer::~nsHaikuRemoteServer() {
|
|
+ Shutdown();
|
|
+}
|
|
+
|
|
+nsresult nsHaikuRemoteServer::Startup(const char* aAppName, const char* aProfileName) {
|
|
+ nsString className;
|
|
+ BuildClassName(aAppName, aProfileName, className);
|
|
+ BString portName;
|
|
+ portName.SetTo(NS_ConvertUTF16toUTF8(className.get()).get());
|
|
+
|
|
+ fPort = create_port(10, portName.String());
|
|
+ if (fPort < 0) {
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ fRunning = true;
|
|
+ fListenerThread = std::thread([this]() { ListenLoop(); });
|
|
+
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+void nsHaikuRemoteServer::Shutdown() {
|
|
+ fRunning = false;
|
|
+ if (fPort >= 0) {
|
|
+ delete_port(fPort);
|
|
+ fPort = B_BAD_PORT_ID;
|
|
+ }
|
|
+ if (fListenerThread.joinable()) {
|
|
+ fListenerThread.join();
|
|
+ }
|
|
+}
|
|
+
|
|
+void nsHaikuRemoteServer::ListenLoop() {
|
|
+ while (fRunning) {
|
|
+ char buffer[B_PATH_NAME_LENGTH * 2];
|
|
+ int32 code;
|
|
+ ssize_t len = read_port(fPort, &code, buffer, sizeof(buffer));
|
|
+ if (len > 0) {
|
|
+ buffer[len] = '\0';
|
|
+ HandleMessage(buffer);
|
|
+ } else {
|
|
+ snooze(50000);
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+nsresult nsHaikuRemoteServer::HandleMessage(const char* message) {
|
|
+ return NS_DispatchToMainThread(
|
|
+ NS_NewRunnableFunction("HandleMessageOnMainThread", [this, msg = std::string(message)]() {
|
|
+ this->HandleMessageOnMainThread(msg.c_str());
|
|
+ })
|
|
+ );
|
|
+}
|
|
+
|
|
+void nsHaikuRemoteServer::HandleMessageOnMainThread(const char* message) {
|
|
+ BString messageString(message);
|
|
+ BStringList argsList;
|
|
+ messageString.Split("|", true, argsList);
|
|
+
|
|
+ if (argsList.IsEmpty())
|
|
+ return;
|
|
+
|
|
+ bool activate = (argsList.First() == "1");
|
|
+
|
|
+ argsList.Remove(0);
|
|
+
|
|
+ int argc = argsList.CountStrings();
|
|
+ const char** argv = new const char*[argc];
|
|
+ for (int i = 0; i < argc; i++) {
|
|
+ argv[i] = argsList.StringAt(i).String();
|
|
+ }
|
|
+
|
|
+ nsCOMPtr<nsICommandLineRunner> cmdLine(new nsCommandLine());
|
|
+ nsresult rv = cmdLine->Init(argc, argv, nullptr, nsICommandLine::STATE_REMOTE_AUTO);
|
|
+ delete[] argv;
|
|
+
|
|
+ if (NS_SUCCEEDED(rv)) {
|
|
+ cmdLine->Run();
|
|
+ if (activate) {
|
|
+ team_info teamInfo;
|
|
+ if (get_team_info(B_CURRENT_TEAM, &teamInfo) == B_OK) {
|
|
+ if (be_roster->ActivateApp(teamInfo.team) != B_OK && be_app != NULL) {
|
|
+ // if the activation fails, activate all titled windows
|
|
+ for (int32 i = 0; BWindow* window = be_app->WindowAt(i); i++) {
|
|
+ if (window->Type() == B_TITLED_WINDOW) {
|
|
+ window->Activate(true);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+}
|
|
diff --git a/toolkit/components/remote/nsHaikuRemoteServer.h b/toolkit/components/remote/nsHaikuRemoteServer.h
|
|
new file mode 100644
|
|
index 0000000..7c6d057
|
|
--- /dev/null
|
|
+++ b/toolkit/components/remote/nsHaikuRemoteServer.h
|
|
@@ -0,0 +1,37 @@
|
|
+#ifndef HAIKU_REMOTE_SERVER_H
|
|
+#define HAIKU_REMOTE_SERVER_H
|
|
+
|
|
+#include "nsRemoteServer.h"
|
|
+
|
|
+#include <thread>
|
|
+#include <atomic>
|
|
+
|
|
+#pragma GCC visibility push(default)
|
|
+#include <kernel/OS.h>
|
|
+#include <app/Application.h>
|
|
+#include <app/Messenger.h>
|
|
+#include <app/Roster.h>
|
|
+#include <interface/Window.h>
|
|
+#include <support/String.h>
|
|
+#include <support/StringList.h>
|
|
+#pragma GCC visibility pop
|
|
+
|
|
+class nsHaikuRemoteServer : public nsRemoteServer {
|
|
+public:
|
|
+ nsHaikuRemoteServer();
|
|
+ ~nsHaikuRemoteServer() override;
|
|
+
|
|
+ nsresult Startup(const char* aAppName, const char* aProfileName) override;
|
|
+ void Shutdown() override;
|
|
+
|
|
+private:
|
|
+ void ListenLoop();
|
|
+ nsresult HandleMessage(const char* message);
|
|
+ void HandleMessageOnMainThread(const char* message);
|
|
+
|
|
+ std::atomic<bool> fRunning;
|
|
+ std::thread fListenerThread;
|
|
+ port_id fPort;
|
|
+};
|
|
+
|
|
+#endif
|
|
diff --git a/toolkit/components/remote/nsRemoteService.cpp b/toolkit/components/remote/nsRemoteService.cpp
|
|
index 46860f6..b010d4d 100644
|
|
--- a/toolkit/components/remote/nsRemoteService.cpp
|
|
+++ b/toolkit/components/remote/nsRemoteService.cpp
|
|
@@ -7,7 +7,10 @@
|
|
|
|
#include "nsRemoteClient.h"
|
|
#ifdef MOZ_WIDGET_GTK
|
|
-# ifdef MOZ_ENABLE_DBUS
|
|
+# if defined(XP_HAIKU)
|
|
+# include "nsHaikuRemoteServer.h"
|
|
+# include "nsHaikuRemoteClient.h"
|
|
+# elif defined(MOZ_ENABLE_DBUS)
|
|
# include "nsDBusRemoteServer.h"
|
|
# include "nsDBusRemoteClient.h"
|
|
# else
|
|
@@ -196,7 +199,9 @@ nsresult nsRemoteService::SendCommandLine(const nsACString& aProfile,
|
|
|
|
UniquePtr<nsRemoteClient> client;
|
|
#ifdef MOZ_WIDGET_GTK
|
|
-# if defined(MOZ_ENABLE_DBUS)
|
|
+# if defined(XP_HAIKU)
|
|
+ client = MakeUnique<nsHaikuRemoteClient>();
|
|
+# elif defined(MOZ_ENABLE_DBUS)
|
|
client = MakeUnique<nsDBusRemoteClient>(mStartupToken);
|
|
# else
|
|
client = MakeUnique<nsXRemoteClient>(mStartupToken);
|
|
@@ -258,7 +263,9 @@ void nsRemoteService::StartupServer() {
|
|
}
|
|
|
|
#ifdef MOZ_WIDGET_GTK
|
|
-# if defined(MOZ_ENABLE_DBUS)
|
|
+# if defined(XP_HAIKU)
|
|
+ mRemoteServer = MakeUnique<nsHaikuRemoteServer>();
|
|
+# elif defined(MOZ_ENABLE_DBUS)
|
|
mRemoteServer = MakeUnique<nsDBusRemoteServer>();
|
|
# else
|
|
mRemoteServer = MakeUnique<nsGTKRemoteServer>();
|
|
diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build
|
|
index 2853f66..cd81d58 100644
|
|
--- a/toolkit/library/moz.build
|
|
+++ b/toolkit/library/moz.build
|
|
@@ -106,6 +106,10 @@ def Libxul(name, output_category=None):
|
|
if name == "xul-gtest" and CONFIG["MOZ_LTO_FAT"]:
|
|
LDFLAGS += ["-fno-lto"]
|
|
|
|
+if CONFIG["OS_ARCH"] == "Haiku":
|
|
+ OS_LIBS += [
|
|
+ "be",
|
|
+ ]
|
|
|
|
# The real libxul definition is in ./build/moz.build, but we define a
|
|
# xul library here such that # FINAL_LIBRARY = 'xul' refers to here, which
|
|
diff --git a/toolkit/library/rust/moz.build b/toolkit/library/rust/moz.build
|
|
index 0115e3b..d753e5b 100644
|
|
--- a/toolkit/library/rust/moz.build
|
|
+++ b/toolkit/library/rust/moz.build
|
|
@@ -8,6 +8,12 @@ include("gkrust-features.mozbuild")
|
|
|
|
RustLibrary("gkrust", gkrust_features, is_gkrust=True)
|
|
|
|
+if CONFIG["OS_ARCH"] == "Haiku":
|
|
+ # Rust 1.83+ requires arc4random_buf()
|
|
+ OS_LIBS += [
|
|
+ "bsd"
|
|
+ ]
|
|
+
|
|
for feature in gkrust_features:
|
|
# We don't want to enable refcount logging during rusttests, since the
|
|
# relevant FFI symbols wouldn't be found.
|
|
diff --git a/toolkit/modules/ShortcutUtils.sys.mjs b/toolkit/modules/ShortcutUtils.sys.mjs
|
|
index 0a2a5ac..d87183b 100644
|
|
--- a/toolkit/modules/ShortcutUtils.sys.mjs
|
|
+++ b/toolkit/modules/ShortcutUtils.sys.mjs
|
|
@@ -95,7 +95,7 @@ export var ShortcutUtils = {
|
|
let elemString = "";
|
|
let haveCloverLeaf = false;
|
|
if (elemMod.match("accel")) {
|
|
- if (Services.appinfo.OS == "Darwin") {
|
|
+ if (Services.appinfo.OS == "Darwin" || Services.appinfo.OS == "Haiku") {
|
|
haveCloverLeaf = true;
|
|
} else {
|
|
elemString +=
|
|
@@ -104,7 +104,7 @@ export var ShortcutUtils = {
|
|
}
|
|
}
|
|
if (elemMod.match("access")) {
|
|
- if (Services.appinfo.OS == "Darwin") {
|
|
+ if (Services.appinfo.OS == "Darwin" || Services.appinfo.OS == "Haiku") {
|
|
elemString +=
|
|
lazy.PlatformKeys.GetStringFromName("VK_CONTROL") +
|
|
lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
@@ -125,14 +125,26 @@ export var ShortcutUtils = {
|
|
lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
}
|
|
if (elemMod.match("alt")) {
|
|
- elemString +=
|
|
- lazy.PlatformKeys.GetStringFromName("VK_ALT") +
|
|
- lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ if (Services.appinfo.OS == "Haiku") {
|
|
+ elemString +=
|
|
+ lazy.PlatformKeys.GetStringFromName("VK_CONTROL") +
|
|
+ lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ } else {
|
|
+ elemString +=
|
|
+ lazy.PlatformKeys.GetStringFromName("VK_ALT") +
|
|
+ lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ }
|
|
}
|
|
if (elemMod.match("ctrl") || elemMod.match("control")) {
|
|
- elemString +=
|
|
- lazy.PlatformKeys.GetStringFromName("VK_CONTROL") +
|
|
- lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ if (Services.appinfo.OS == "Haiku") {
|
|
+ elemString +=
|
|
+ lazy.PlatformKeys.GetStringFromName("VK_ALT") +
|
|
+ lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ } else {
|
|
+ elemString +=
|
|
+ lazy.PlatformKeys.GetStringFromName("VK_CONTROL") +
|
|
+ lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ }
|
|
}
|
|
if (elemMod.match("meta") && this.metaKeyIsCommandKey()) {
|
|
elemString +=
|
|
@@ -141,9 +153,15 @@ export var ShortcutUtils = {
|
|
}
|
|
|
|
if (haveCloverLeaf) {
|
|
- elemString +=
|
|
- lazy.PlatformKeys.GetStringFromName("VK_COMMAND_OR_WIN") +
|
|
- lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ if (Services.appinfo.OS == "Haiku") {
|
|
+ elemString +=
|
|
+ lazy.PlatformKeys.GetStringFromName("VK_ALT") +
|
|
+ lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ } else {
|
|
+ elemString +=
|
|
+ lazy.PlatformKeys.GetStringFromName("VK_COMMAND_OR_WIN") +
|
|
+ lazy.PlatformKeys.GetStringFromName("MODIFIER_SEPARATOR");
|
|
+ }
|
|
}
|
|
|
|
return elemString;
|
|
diff --git a/toolkit/moz.configure b/toolkit/moz.configure
|
|
index bdb2222..64d6a55 100644
|
|
--- a/toolkit/moz.configure
|
|
+++ b/toolkit/moz.configure
|
|
@@ -301,6 +301,8 @@ def audio_backends_default(target):
|
|
return ("sndio",)
|
|
elif target.kernel == "Darwin":
|
|
return ("audiounit",)
|
|
+ elif target.os == "Haiku":
|
|
+ return ("haiku",)
|
|
elif target.os == "NetBSD":
|
|
return ("sunaudio",)
|
|
elif target.os == "SunOS":
|
|
@@ -318,6 +320,7 @@ option(
|
|
"aaudio",
|
|
"alsa",
|
|
"audiounit",
|
|
+ "haiku",
|
|
"jack",
|
|
"opensl",
|
|
"oss",
|
|
@@ -356,6 +359,11 @@ def imply_audiounit(values, target):
|
|
return any("audiounit" in value for value in values) or None
|
|
|
|
|
|
+@depends("--enable-audio-backends")
|
|
+def imply_haiku(values):
|
|
+ return any("haiku" in value for value in values) or None
|
|
+
|
|
+
|
|
@depends("--enable-audio-backends")
|
|
def imply_jack(values):
|
|
return any("jack" in value for value in values) or None
|
|
@@ -419,6 +427,8 @@ imply_option(
|
|
|
|
set_config("MOZ_AUDIOUNIT_RUST", imply_audiounit, when="--enable-audio-backends")
|
|
|
|
+set_config("MOZ_HAIKU", imply_haiku, when="--enable-audio-backends")
|
|
+
|
|
imply_option(
|
|
"--enable-jack", imply_jack, reason="--enable-audio-backends", when=use_pkg_config
|
|
)
|
|
@@ -1755,7 +1765,7 @@ with only_when("--enable-compile-environment"):
|
|
# being built as position independent.
|
|
"int main() { return 0; }\nint (*ptr)() = main;",
|
|
pack_rel_relocs
|
|
- + ["-pie", "-o", path]
|
|
+ + ["-fPIC", "-o", path]
|
|
+ (extra_toolchain_flags or [])
|
|
+ linker_ldflags,
|
|
wrapper=c_compiler.wrapper,
|
|
@@ -3158,6 +3168,7 @@ def forkserver_default(target, build_project):
|
|
(target.os == "GNU" and target.kernel == "Linux")
|
|
or target.os == "FreeBSD"
|
|
or target.os == "OpenBSD"
|
|
+ or target.os == "Haiku"
|
|
)
|
|
|
|
|
|
@@ -3952,7 +3963,7 @@ with only_when(compile_environment):
|
|
|
|
@depends(target)
|
|
def default_user_appdir(target):
|
|
- if target.kernel in ("WINNT", "Darwin"):
|
|
+ if target.kernel in ("WINNT", "Darwin", "Haiku"):
|
|
return "Mozilla"
|
|
elif target.os == "Android":
|
|
return ".mozilla"
|
|
diff --git a/toolkit/system/gnome/moz.build b/toolkit/system/gnome/moz.build
|
|
index ce84646..1ebee31 100644
|
|
--- a/toolkit/system/gnome/moz.build
|
|
+++ b/toolkit/system/gnome/moz.build
|
|
@@ -7,8 +7,12 @@
|
|
with Files("**"):
|
|
BUG_COMPONENT = ("Firefox", "Shell Integration")
|
|
|
|
+if CONFIG["OS_ARCH"] != "Haiku":
|
|
+ SOURCES += [
|
|
+ "nsAlertsIconListener.cpp",
|
|
+ ]
|
|
+
|
|
SOURCES += [
|
|
- "nsAlertsIconListener.cpp",
|
|
"nsSystemAlertsService.cpp",
|
|
]
|
|
|
|
diff --git a/toolkit/system/gnome/nsGIOService.cpp b/toolkit/system/gnome/nsGIOService.cpp
|
|
index c505594..f72bd16 100644
|
|
--- a/toolkit/system/gnome/nsGIOService.cpp
|
|
+++ b/toolkit/system/gnome/nsGIOService.cpp
|
|
@@ -494,6 +494,32 @@ gboolean g_app_info_launch_default_for_uri_openbsd(const char* uri,
|
|
}
|
|
#endif
|
|
|
|
+#ifdef __HAIKU__
|
|
+
|
|
+gboolean g_app_info_launch_uris_haiku(GAppInfo* mApp, const char* uri,
|
|
+ GAppLaunchContext* context,
|
|
+ GError** error) {
|
|
+ gchar* command = g_strdup_printf("open '%s'", uri);
|
|
+ auto releaseCommand = MakeScopeExit([&] { g_free(command); });
|
|
+
|
|
+ int result = system(command);
|
|
+
|
|
+ if (result != 0) {
|
|
+ g_set_error(error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
|
+ "Failed to open URI '%s' using 'open' utility", uri);
|
|
+ return FALSE;
|
|
+ }
|
|
+ return TRUE;
|
|
+}
|
|
+
|
|
+gboolean g_app_info_launch_default_for_uri_haiku(const char* uri,
|
|
+ GAppLaunchContext* context,
|
|
+ GError** error) {
|
|
+ return g_app_info_launch_uris_haiku(NULL, uri, context, error);
|
|
+}
|
|
+
|
|
+#endif // __HAIKU__
|
|
+
|
|
static NS_IMETHODIMP LaunchWithURIImpl(RefPtr<GAppInfo> aInfo, nsIURI* aUri,
|
|
const char* aXDGToken = nullptr) {
|
|
GList uris = {nullptr};
|
|
@@ -507,6 +533,10 @@ static NS_IMETHODIMP LaunchWithURIImpl(RefPtr<GAppInfo> aInfo, nsIURI* aUri,
|
|
gboolean result = g_app_info_launch_uris_openbsd(
|
|
aInfo, spec.get(), GetLaunchContext(aXDGToken).get(),
|
|
getter_Transfers(error));
|
|
+#elif defined(__HAIKU__)
|
|
+ gboolean result = g_app_info_launch_uris_haiku(
|
|
+ aInfo, spec.get(), GetLaunchContext(aXDGToken).get(),
|
|
+ getter_Transfers(error));
|
|
#else
|
|
gboolean result = g_app_info_launch_uris(
|
|
aInfo, &uris, GetLaunchContext(aXDGToken).get(), getter_Transfers(error));
|
|
@@ -926,6 +956,9 @@ static nsresult ShowURIImpl(nsIURI* aURI, const char* aXDGToken = nullptr) {
|
|
#ifdef __OpenBSD__
|
|
if (!g_app_info_launch_default_for_uri_openbsd(
|
|
spec.get(), GetLaunchContext(aXDGToken).get(),
|
|
+#elif defined(__HAIKU__)
|
|
+ if (!g_app_info_launch_default_for_uri_haiku(
|
|
+ spec.get(), GetLaunchContext(aXDGToken).get(),
|
|
#else
|
|
if (!g_app_info_launch_default_for_uri(spec.get(),
|
|
GetLaunchContext(aXDGToken).get(),
|
|
@@ -971,6 +1004,9 @@ static nsresult LaunchPathImpl(const nsACString& aPath,
|
|
#ifdef __OpenBSD__
|
|
g_app_info_launch_default_for_uri_openbsd(spec.get(),
|
|
GetLaunchContext(aXDGToken).get(),
|
|
+#elif defined(__HAIKU__)
|
|
+ g_app_info_launch_default_for_uri_haiku(spec.get(),
|
|
+ GetLaunchContext(aXDGToken).get(),
|
|
#else
|
|
g_app_info_launch_default_for_uri(spec.get(),
|
|
GetLaunchContext(aXDGToken).get(),
|
|
diff --git a/toolkit/system/haiku/moz.build b/toolkit/system/haiku/moz.build
|
|
new file mode 100644
|
|
index 0000000..8c3bf79
|
|
--- /dev/null
|
|
+++ b/toolkit/system/haiku/moz.build
|
|
@@ -0,0 +1,26 @@
|
|
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
+# vim: set filetype=python:
|
|
+# This Source Code Form is subject to the terms of the Mozilla Public
|
|
+# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
+
|
|
+with Files("**"):
|
|
+ BUG_COMPONENT = ("Firefox", "Shell Integration")
|
|
+
|
|
+if CONFIG["OS_ARCH"] == "Haiku":
|
|
+ SOURCES += [
|
|
+ "nsAlertsIconListener.cpp",
|
|
+ ]
|
|
+ OS_LIBS += [
|
|
+ 'be',
|
|
+ ]
|
|
+
|
|
+
|
|
+FINAL_LIBRARY = "xul"
|
|
+
|
|
+LOCAL_INCLUDES += [
|
|
+ "/toolkit/components/build/",
|
|
+]
|
|
+
|
|
+CXXFLAGS += CONFIG["GLIB_CFLAGS"]
|
|
+CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
|
diff --git a/toolkit/system/haiku/nsAlertsIconListener.cpp b/toolkit/system/haiku/nsAlertsIconListener.cpp
|
|
new file mode 100644
|
|
index 0000000..89bd0bb
|
|
--- /dev/null
|
|
+++ b/toolkit/system/haiku/nsAlertsIconListener.cpp
|
|
@@ -0,0 +1,170 @@
|
|
+#include "../gnome/nsSystemAlertsService.h"
|
|
+#include "nsAlertsIconListener.h"
|
|
+#include "imgIContainer.h"
|
|
+#include "nsServiceManagerUtils.h"
|
|
+#include "nsIAlertsService.h"
|
|
+#include "nsImageToPixbuf.h"
|
|
+#include "nsIStringBundle.h"
|
|
+#include "nsIObserverService.h"
|
|
+#include "nsCRT.h"
|
|
+#include "mozilla/UniquePtrExtensions.h"
|
|
+#include "nsNetUtil.h"
|
|
+#include "mozilla/GRefPtr.h"
|
|
+
|
|
+#include <stdio.h>
|
|
+#include <algorithm>
|
|
+#include <cmath>
|
|
+
|
|
+using namespace mozilla;
|
|
+
|
|
+NS_IMPL_ISUPPORTS(nsAlertsIconListener, nsISupports)
|
|
+
|
|
+GdkPixbuf* nsAlertsIconListener::GetPixbufFromContainer(imgIContainer* aImage) {
|
|
+ if (!aImage) {
|
|
+ return nullptr;
|
|
+ }
|
|
+
|
|
+ RefPtr<GdkPixbuf> pixbuf = nsImageToPixbuf::ImageToPixbuf(aImage);
|
|
+ if (!pixbuf) {
|
|
+ return nullptr;
|
|
+ }
|
|
+
|
|
+ return pixbuf.forget().take();
|
|
+}
|
|
+
|
|
+BBitmap* nsAlertsIconListener::PixbufToBitmap(GdkPixbuf* aPixbuf) {
|
|
+ if (!aPixbuf) return nullptr;
|
|
+
|
|
+ int width = gdk_pixbuf_get_width(aPixbuf);
|
|
+ int height = gdk_pixbuf_get_height(aPixbuf);
|
|
+
|
|
+ const int maxWidth = 64;
|
|
+ const int maxHeight = 64;
|
|
+
|
|
+ GdkPixbuf* pixbufToUse = aPixbuf;
|
|
+ RefPtr<GdkPixbuf> scaledPixbuf;
|
|
+
|
|
+ if (width > maxWidth || height > maxHeight) {
|
|
+ double ratio = std::min(static_cast<double>(maxWidth) / width,
|
|
+ static_cast<double>(maxHeight) / height);
|
|
+ int newWidth = std::max(1, static_cast<int>(std::round(width * ratio)));
|
|
+ int newHeight = std::max(1, static_cast<int>(std::round(height * ratio)));
|
|
+
|
|
+ scaledPixbuf = dont_AddRef(gdk_pixbuf_scale_simple(aPixbuf, newWidth, newHeight, GDK_INTERP_BILINEAR));
|
|
+ if (!scaledPixbuf) return nullptr;
|
|
+ pixbufToUse = scaledPixbuf.get();
|
|
+ width = newWidth;
|
|
+ height = newHeight;
|
|
+ }
|
|
+
|
|
+ BRect bounds(0, 0, width - 1, height - 1);
|
|
+ BBitmap* bitmap = new BBitmap(bounds, B_RGBA32);
|
|
+ if (!bitmap || bitmap->InitCheck() != B_OK) {
|
|
+ delete bitmap;
|
|
+ return nullptr;
|
|
+ }
|
|
+
|
|
+ guchar* pixels = gdk_pixbuf_get_pixels(pixbufToUse);
|
|
+ int rowstride = gdk_pixbuf_get_rowstride(pixbufToUse);
|
|
+ uint8* dest = (uint8*)bitmap->Bits();
|
|
+ uint32 destRowstride = bitmap->BytesPerRow();
|
|
+
|
|
+ for (int y = 0; y < height; ++y) {
|
|
+ guchar* srcP = pixels + y * rowstride;
|
|
+ uint8* destP = dest + y * destRowstride;
|
|
+ for (int x = 0; x < width; ++x) {
|
|
+ destP[0] = srcP[2]; // B
|
|
+ destP[1] = srcP[1]; // G
|
|
+ destP[2] = srcP[0]; // R
|
|
+ destP[3] = srcP[3]; // A
|
|
+ srcP += 4;
|
|
+ destP += 4;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return bitmap;
|
|
+}
|
|
+
|
|
+nsAlertsIconListener::nsAlertsIconListener(nsSystemAlertsService* aBackend,
|
|
+ nsIAlertNotification* aAlertNotification,
|
|
+ const nsAString& aAlertName)
|
|
+ : mAlertName(aAlertName), mBackend(aBackend), mAlertNotification(aAlertNotification) {}
|
|
+
|
|
+nsAlertsIconListener::~nsAlertsIconListener() {
|
|
+ mBackend->RemoveListener(mAlertName, this);
|
|
+}
|
|
+
|
|
+nsresult nsAlertsIconListener::InitAlert(nsIAlertNotification* aAlert,
|
|
+ nsIObserver* aAlertListener) {
|
|
+ aAlert->GetTextClickable(&mAlertHasAction);
|
|
+ aAlert->GetSilent(&mAlertIsSilent);
|
|
+ aAlert->GetRequireInteraction(&mAlertRequiresInteraction);
|
|
+
|
|
+ nsAutoString title, text;
|
|
+ aAlert->GetTitle(title);
|
|
+ aAlert->GetText(text);
|
|
+ CopyUTF16toUTF8(title, mAlertTitle);
|
|
+ CopyUTF16toUTF8(text, mAlertText);
|
|
+
|
|
+ mAlertListener = aAlertListener;
|
|
+ aAlert->GetCookie(mAlertCookie);
|
|
+
|
|
+ nsCOMPtr<imgIContainer> image;
|
|
+ aAlert->GetImage(getter_AddRefs(image));
|
|
+
|
|
+ return ShowAlert(image);
|
|
+}
|
|
+
|
|
+nsresult nsAlertsIconListener::ShowAlert(imgIContainer* aImage) {
|
|
+ if (!mBackend->IsActiveListener(mAlertName, this)) return NS_OK;
|
|
+
|
|
+ BNotification notification(B_INFORMATION_NOTIFICATION);
|
|
+ if (notification.InitCheck() != B_OK) return NS_ERROR_FAILURE;
|
|
+
|
|
+ if (aImage) {
|
|
+ GdkPixbuf* pixbuf = GetPixbufFromContainer(aImage);
|
|
+ if (pixbuf) {
|
|
+ BBitmap* bitmap = PixbufToBitmap(pixbuf);
|
|
+ if (bitmap) {
|
|
+ notification.SetIcon(bitmap);
|
|
+ delete bitmap;
|
|
+ }
|
|
+ g_object_unref(pixbuf);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ notification.SetTitle(mAlertTitle.IsEmpty() ? "Notification" : mAlertTitle.get());
|
|
+ notification.SetContent(mAlertText.get());
|
|
+
|
|
+ notification.SetGroup("Mozilla");
|
|
+
|
|
+ bigtime_t timeout = mAlertRequiresInteraction ? 15000000 : -1;
|
|
+ status_t err = notification.Send(timeout);
|
|
+
|
|
+ if (mAlertListener)
|
|
+ mAlertListener->Observe(nullptr, "alertshow", mAlertCookie.get());
|
|
+
|
|
+ return (err == B_OK) ? NS_OK : NS_ERROR_FAILURE;
|
|
+}
|
|
+
|
|
+void nsAlertsIconListener::SendCallback() {
|
|
+ if (mAlertListener)
|
|
+ mAlertListener->Observe(nullptr, "alertclickcallback", mAlertCookie.get());
|
|
+}
|
|
+
|
|
+void nsAlertsIconListener::SendClosed() {
|
|
+ NotifyFinished();
|
|
+}
|
|
+
|
|
+void nsAlertsIconListener::Disconnect() {
|
|
+}
|
|
+
|
|
+nsresult nsAlertsIconListener::Close() {
|
|
+ NotifyFinished();
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+void nsAlertsIconListener::NotifyFinished() {
|
|
+ if (mAlertListener)
|
|
+ mAlertListener->Observe(nullptr, "alertfinished", mAlertCookie.get());
|
|
+}
|
|
diff --git a/toolkit/system/haiku/nsAlertsIconListener.h b/toolkit/system/haiku/nsAlertsIconListener.h
|
|
new file mode 100644
|
|
index 0000000..b3f81b7
|
|
--- /dev/null
|
|
+++ b/toolkit/system/haiku/nsAlertsIconListener.h
|
|
@@ -0,0 +1,68 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
+
|
|
+#ifndef nsAlertsIconListener_h__
|
|
+#define nsAlertsIconListener_h__
|
|
+
|
|
+#include "nsCOMPtr.h"
|
|
+#include "nsIAlertsService.h"
|
|
+#include "nsString.h"
|
|
+#include "nsIObserver.h"
|
|
+#include "mozilla/RefPtr.h"
|
|
+
|
|
+#include <gdk-pixbuf/gdk-pixbuf.h>
|
|
+
|
|
+#pragma GCC visibility push(default)
|
|
+#include <app/Notification.h>
|
|
+#include <interface/InterfaceDefs.h>
|
|
+#include <interface/Bitmap.h>
|
|
+#include <interface/Rect.h>
|
|
+#pragma GCC visibility pop
|
|
+
|
|
+class nsIAlertNotification;
|
|
+class nsSystemAlertsService;
|
|
+class imgIContainer;
|
|
+
|
|
+class nsAlertsIconListener final : public nsISupports {
|
|
+ public:
|
|
+ NS_DECL_ISUPPORTS
|
|
+
|
|
+ nsAlertsIconListener(nsSystemAlertsService* aBackend,
|
|
+ nsIAlertNotification* aAlertNotification,
|
|
+ const nsAString& aAlertName);
|
|
+
|
|
+ nsresult InitAlert(nsIAlertNotification* aAlert, nsIObserver* aAlertListener);
|
|
+ nsresult Close();
|
|
+
|
|
+ void SendCallback();
|
|
+ void SendClosed();
|
|
+ void Disconnect();
|
|
+
|
|
+ protected:
|
|
+ virtual ~nsAlertsIconListener();
|
|
+
|
|
+ static BBitmap* PixbufToBitmap(GdkPixbuf* aPixbuf);
|
|
+ static GdkPixbuf* GetPixbufFromContainer(imgIContainer* aContainer);
|
|
+
|
|
+ nsCString mAlertTitle;
|
|
+ nsCString mAlertText;
|
|
+
|
|
+ nsCOMPtr<nsIObserver> mAlertListener;
|
|
+ nsString mAlertCookie;
|
|
+ nsString mAlertName;
|
|
+
|
|
+ RefPtr<nsSystemAlertsService> mBackend;
|
|
+ nsCOMPtr<nsIAlertNotification> mAlertNotification;
|
|
+
|
|
+ bool mAlertHasAction;
|
|
+ bool mAlertIsSilent;
|
|
+ bool mAlertRequiresInteraction;
|
|
+
|
|
+ nsresult ShowAlert(imgIContainer* aImage);
|
|
+
|
|
+ void NotifyFinished();
|
|
+};
|
|
+
|
|
+#endif
|
|
diff --git a/toolkit/themes/shared/popup.css b/toolkit/themes/shared/popup.css
|
|
index 064d39c..73e7e4d 100644
|
|
--- a/toolkit/themes/shared/popup.css
|
|
+++ b/toolkit/themes/shared/popup.css
|
|
@@ -45,6 +45,12 @@ panel {
|
|
}
|
|
}
|
|
|
|
+ /* Disable border-radius and shadow for Haiku popups */
|
|
+ @media (-moz-platform: linux) {
|
|
+ --panel-border-radius: 0px;
|
|
+ --panel-shadow-margin: 0px;
|
|
+ }
|
|
+
|
|
@media (-moz-platform: macos) {
|
|
appearance: auto;
|
|
-moz-default-appearance: menupopup;
|
|
diff --git a/toolkit/toolkit.mozbuild b/toolkit/toolkit.mozbuild
|
|
index 24f86c7..59534b6 100644
|
|
--- a/toolkit/toolkit.mozbuild
|
|
+++ b/toolkit/toolkit.mozbuild
|
|
@@ -148,6 +148,7 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
DIRS += [
|
|
"/media/mozva",
|
|
"/toolkit/system/gnome",
|
|
+ "/toolkit/system/haiku",
|
|
]
|
|
|
|
if CONFIG["ENABLE_WEBDRIVER"]:
|
|
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
|
|
index 950ff0b..ea6c2c9 100644
|
|
--- a/toolkit/xre/nsAppRunner.cpp
|
|
+++ b/toolkit/xre/nsAppRunner.cpp
|
|
@@ -341,14 +341,16 @@ constinit nsString gProcessStartupShortcut;
|
|
# ifdef MOZ_WAYLAND
|
|
# include <gdk/gdkwayland.h>
|
|
# include "mozilla/widget/nsWaylandDisplay.h"
|
|
+# ifndef XP_HAIKU
|
|
# include "wayland-proxy.h"
|
|
+# endif
|
|
# endif
|
|
# ifdef MOZ_X11
|
|
# include <gdk/gdkx.h>
|
|
# endif /* MOZ_X11 */
|
|
#endif
|
|
|
|
-#if defined(MOZ_WAYLAND)
|
|
+#if defined(MOZ_WAYLAND) && !defined(XP_HAIKU)
|
|
constinit std::unique_ptr<WaylandProxy> gWaylandProxy;
|
|
#endif
|
|
|
|
@@ -429,6 +431,9 @@ static void UnexpectedExit() {
|
|
|
|
#if defined(MOZ_WAYLAND)
|
|
bool IsWaylandEnabled() {
|
|
+#ifdef XP_HAIKU
|
|
+ return true;
|
|
+#else
|
|
static bool isWaylandEnabled = []() {
|
|
const char* waylandDisplay = PR_GetEnv("WAYLAND_DISPLAY");
|
|
if (!waylandDisplay) {
|
|
@@ -459,6 +464,7 @@ bool IsWaylandEnabled() {
|
|
return !gtk_check_version(3, 24, 30);
|
|
}();
|
|
return isWaylandEnabled;
|
|
+#endif // !XP_HAIKU
|
|
}
|
|
#else
|
|
bool IsWaylandEnabled() { return false; }
|
|
@@ -3826,7 +3832,7 @@ class XREMain {
|
|
#endif
|
|
};
|
|
|
|
-#if defined(XP_UNIX) && !defined(ANDROID)
|
|
+#if defined(XP_UNIX) && !defined(ANDROID) && !defined(XP_HAIKU)
|
|
static SmprintfPointer FormatUid(uid_t aId) {
|
|
if (const auto pw = getpwuid(aId)) {
|
|
return mozilla::Smprintf("%s", pw->pw_name);
|
|
@@ -3875,7 +3881,7 @@ static bool CheckForUserMismatch() {
|
|
}
|
|
return false;
|
|
}
|
|
-#else // !XP_UNIX || ANDROID
|
|
+#else // !XP_UNIX || ANDROID || XP_HAIKU
|
|
static bool CheckForUserMismatch() { return false; }
|
|
#endif
|
|
|
|
@@ -4872,7 +4878,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
|
|
// display_name is owned by gdk.
|
|
display_name = gdk_get_display_arg_name();
|
|
bool waylandEnabled = IsWaylandEnabled();
|
|
-# ifdef MOZ_WAYLAND
|
|
+# if defined(MOZ_WAYLAND) && !defined(XP_HAIKU)
|
|
if (!display_name) {
|
|
auto* proxyEnv = getenv("MOZ_DISABLE_WAYLAND_PROXY");
|
|
bool disableWaylandProxy = proxyEnv && *proxyEnv;
|
|
@@ -4927,7 +4933,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
|
|
} else {
|
|
gdk_display_manager_open_display(gdk_display_manager_get(), nullptr);
|
|
}
|
|
-# if defined(MOZ_WAYLAND)
|
|
+# if defined(MOZ_WAYLAND) && !defined(XP_HAIKU)
|
|
// We want to use proxy for main connection only so
|
|
// restore original Wayland display for next potential Wayland connections
|
|
// from gfx probe code and so on.
|
|
@@ -6236,7 +6242,9 @@ int XREMain::XRE_main(int argc, char* argv[], const BootstrapConfig& aConfig) {
|
|
if (!gfxPlatform::IsHeadless()) {
|
|
# ifdef MOZ_WAYLAND
|
|
WaylandDisplayRelease();
|
|
+# ifndef XP_HAIKU
|
|
gWaylandProxy = nullptr;
|
|
+# endif // !XP_HAIKU
|
|
# endif
|
|
}
|
|
#endif
|
|
diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp
|
|
index eac36ad..5b8cc19 100644
|
|
--- a/toolkit/xre/nsEmbedFunctions.cpp
|
|
+++ b/toolkit/xre/nsEmbedFunctions.cpp
|
|
@@ -349,6 +349,7 @@ nsresult XRE_InitChildProcess(int aArgc, char* aArgv[],
|
|
|
|
SetupErrorHandling(aArgv[0]);
|
|
|
|
+#ifndef XP_HAIKU
|
|
bool exceptionHandlerIsSet = false;
|
|
if (!CrashReporter::IsDummy()) {
|
|
exceptionHandlerIsSet =
|
|
@@ -365,6 +366,7 @@ nsresult XRE_InitChildProcess(int aArgc, char* aArgv[],
|
|
CrashReporter::UnregisterRuntimeExceptionModule();
|
|
}
|
|
}
|
|
+#endif
|
|
|
|
#ifdef MOZ_X11
|
|
XInitThreads();
|
|
@@ -596,7 +598,9 @@ nsresult XRE_InitChildProcess(int aArgc, char* aArgv[],
|
|
}
|
|
}
|
|
|
|
+#ifndef XP_HAIKU
|
|
CrashReporter::UnsetRemoteExceptionHandler(exceptionHandlerIsSet);
|
|
+#endif
|
|
|
|
return XRE_DeinitCommandLine();
|
|
}
|
|
diff --git a/toolkit/xre/nsSigHandlers.cpp b/toolkit/xre/nsSigHandlers.cpp
|
|
index 146a586..10b7fb6 100644
|
|
--- a/toolkit/xre/nsSigHandlers.cpp
|
|
+++ b/toolkit/xre/nsSigHandlers.cpp
|
|
@@ -43,7 +43,9 @@
|
|
# endif
|
|
|
|
# ifdef MOZ_WAYLAND
|
|
-# include "wayland-proxy.h"
|
|
+# ifndef XP_HAIKU
|
|
+# include "wayland-proxy.h"
|
|
+# endif /* !XP_HAIKU */
|
|
# endif
|
|
|
|
// Note: some tests manipulate this value.
|
|
@@ -180,7 +182,7 @@ static bool IsCrashyGtkMessage(const nsACString& aMessage) {
|
|
static void HandleGLibMessage(GLogLevelFlags aLogLevel,
|
|
const nsDependentCString& aMessage) {
|
|
if (MOZ_UNLIKELY(IsCrashyGtkMessage(aMessage))) {
|
|
-# ifdef MOZ_WAYLAND
|
|
+# if defined(MOZ_WAYLAND) && !defined(XP_HAIKU)
|
|
MOZ_CRASH_UNSAFE_PRINTF(
|
|
"(%s) %s Proxy: %s",
|
|
mozilla::widget::GetDesktopEnvironmentIdentifier().get(),
|
|
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
|
|
index 1b346ce..fb52f64 100644
|
|
--- a/toolkit/xre/nsXREDirProvider.cpp
|
|
+++ b/toolkit/xre/nsXREDirProvider.cpp
|
|
@@ -88,6 +88,10 @@
|
|
#ifdef XP_IOS
|
|
# include "UIKitDirProvider.h"
|
|
#endif
|
|
+#ifdef XP_HAIKU
|
|
+# include <FindDirectory.h>
|
|
+# include <Path.h>
|
|
+#endif
|
|
|
|
#if defined(XP_MACOSX)
|
|
# define APP_REGISTRY_NAME "Application Registry"
|
|
@@ -425,7 +429,7 @@ nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent,
|
|
rv = GetUserDataDirectoryHome(getter_AddRefs(file), /* aLocal */ false,
|
|
/* aForceLegacy */ true);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
-# if defined(XP_MACOSX)
|
|
+# if defined(XP_MACOSX) || defined(XP_HAIKU)
|
|
rv = file->AppendNative("Mozilla"_ns);
|
|
# else // defined(XP_MACOSX)
|
|
rv = file->AppendNative(".mozilla"_ns);
|
|
@@ -1169,6 +1173,12 @@ nsresult nsXREDirProvider::GetUserDataDirectoryHome(nsIFile** aFile,
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
MOZ_TRY(NS_NewLocalFile(path, getter_AddRefs(localDir)));
|
|
+#elif defined(XP_HAIKU)
|
|
+ nsresult rv;
|
|
+ BPath settingsDir;
|
|
+ status_t status = find_directory(B_USER_SETTINGS_DIRECTORY, &settingsDir);
|
|
+ if (status != B_OK) return NS_ERROR_FAILURE;
|
|
+ rv = NS_NewNativeLocalFile(nsDependentCString(settingsDir.Path()), getter_AddRefs(localDir));
|
|
#elif defined(XP_UNIX)
|
|
const char* homeDir = PR_GetEnv("HOME");
|
|
if (!homeDir || !*homeDir) return NS_ERROR_FAILURE;
|
|
@@ -1289,7 +1299,7 @@ nsresult nsXREDirProvider::AppendSysUserExtensionPath(nsIFile* aFile) {
|
|
|
|
nsresult rv;
|
|
|
|
-#if defined(XP_MACOSX) || defined(XP_WIN)
|
|
+#if defined(XP_MACOSX) || defined(XP_WIN) || defined(XP_HAIKU)
|
|
|
|
static const char* const sXR = "Mozilla";
|
|
rv = aFile->AppendNative(nsDependentCString(sXR));
|
|
@@ -1583,7 +1593,7 @@ nsresult nsXREDirProvider::AppendProfilePath(nsIFile* aFile, bool aLocal) {
|
|
}
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
-#elif defined(XP_WIN)
|
|
+#elif defined(XP_WIN) || defined(XP_HAIKU)
|
|
if (!profile.IsEmpty()) {
|
|
rv = AppendProfileString(aFile, profile.get());
|
|
} else {
|
|
diff --git a/tools/profiler/core/ProfilerUtils.cpp b/tools/profiler/core/ProfilerUtils.cpp
|
|
index 4c53061..76d3561 100644
|
|
--- a/tools/profiler/core/ProfilerUtils.cpp
|
|
+++ b/tools/profiler/core/ProfilerUtils.cpp
|
|
@@ -88,6 +88,15 @@ ProfilerThreadId profiler_current_thread_id() {
|
|
return ProfilerThreadId::FromNativeId(id);
|
|
}
|
|
|
|
+// ------------------------------------------------------- Haiku
|
|
+# elif defined(XP_HAIKU)
|
|
+
|
|
+# include <OS.h>
|
|
+
|
|
+ProfilerThreadId profiler_current_thread_id() {
|
|
+ return ProfilerThreadId::FromNativeId(find_thread(NULL));
|
|
+}
|
|
+
|
|
// ------------------------------------------------------- Others
|
|
# else
|
|
|
|
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
|
|
index a0659b9..c1551ef 100644
|
|
--- a/widget/gtk/moz.build
|
|
+++ b/widget/gtk/moz.build
|
|
@@ -27,7 +27,9 @@ if CONFIG["COMPILE_ENVIRONMENT"]:
|
|
DIRS += ["mozgtk"]
|
|
|
|
if CONFIG["MOZ_WAYLAND"]:
|
|
- DIRS += ["wayland", "mozwayland", "../../third_party/wayland-proxy"]
|
|
+ DIRS += ["wayland", "mozwayland"]
|
|
+ if CONFIG["OS_ARCH"] != "Haiku":
|
|
+ DIRS += ["../../third_party/wayland-proxy"]
|
|
|
|
if CONFIG["MOZ_ENABLE_VAAPI"]:
|
|
DIRS += ["vaapitest"]
|
|
diff --git a/widget/gtk/nsWaylandDisplay.cpp b/widget/gtk/nsWaylandDisplay.cpp
|
|
index ea4fce1..2547556 100644
|
|
--- a/widget/gtk/nsWaylandDisplay.cpp
|
|
+++ b/widget/gtk/nsWaylandDisplay.cpp
|
|
@@ -21,7 +21,9 @@
|
|
#include "nsGtkUtils.h"
|
|
#include "nsLayoutUtils.h"
|
|
#include "nsWindow.h"
|
|
-#include "wayland-proxy.h"
|
|
+#ifndef XP_HAIKU
|
|
+# include "wayland-proxy.h"
|
|
+#endif /* !XP_HAIKU */
|
|
|
|
#undef LOG
|
|
#undef LOG_VERBOSE
|
|
@@ -272,6 +274,7 @@ static const struct moz_wl_pointer_listener pointer_listener = {
|
|
};
|
|
|
|
void nsWaylandDisplay::SetPointer(wl_pointer* aPointer) {
|
|
+#ifndef XP_HAIKU
|
|
// Don't even try on such old interface
|
|
if (wl_proxy_get_version((struct wl_proxy*)aPointer) <
|
|
WL_POINTER_RELEASE_SINCE_VERSION) {
|
|
@@ -296,6 +299,7 @@ void nsWaylandDisplay::SetPointer(wl_pointer* aPointer) {
|
|
zwp_pointer_gesture_hold_v1_add_listener(mPointerGestureHold,
|
|
&gesture_hold_listener, this);
|
|
}
|
|
+#endif
|
|
}
|
|
|
|
void nsWaylandDisplay::RemovePointer() {
|
|
@@ -877,6 +881,7 @@ void nsWaylandDisplay::WaitForAsyncRoundtrips() {
|
|
}
|
|
}
|
|
|
|
+#ifndef XP_HAIKU
|
|
// Separate crash functions for different Wayland protocol error patterns.
|
|
// These functions are marked MOZ_NEVER_INLINE to ensure distinct crash
|
|
// signatures for different error types, making them easier to track and fix.
|
|
@@ -967,13 +972,14 @@ MOZ_NEVER_INLINE static void WlLogHandler_MarshallingError(const char* error) {
|
|
GetDesktopEnvironmentIdentifier().get(), error,
|
|
WaylandProxy::GetState());
|
|
}
|
|
+#endif
|
|
|
|
static void WlLogHandler(const char* format, va_list args) {
|
|
char error[1000];
|
|
VsprintfLiteral(error, format, args);
|
|
gfxCriticalNote << "(" << GetDesktopEnvironmentIdentifier().get()
|
|
<< ") Wayland protocol error: " << error;
|
|
-
|
|
+#ifndef XP_HAIKU
|
|
// See Bug 1826583 and Bug 1844653 for reference.
|
|
// "warning: queue %p destroyed while proxies still attached" and variants
|
|
// like "zwp_linux_dmabuf_feedback_v1@%d still attached" are exceptions on
|
|
@@ -1045,15 +1051,18 @@ static void WlLogHandler(const char* format, va_list args) {
|
|
MOZ_CRASH_UNSAFE_PRINTF("(%s) %s Proxy: %s",
|
|
GetDesktopEnvironmentIdentifier().get(), error,
|
|
WaylandProxy::GetState());
|
|
+#endif
|
|
}
|
|
|
|
void WlCompositorCrashHandler() {
|
|
+#ifndef XP_HAIKU
|
|
gfxCriticalNote << "Wayland protocol error: Compositor ("
|
|
<< GetDesktopEnvironmentIdentifier().get()
|
|
<< ") crashed, proxy: " << WaylandProxy::GetState();
|
|
MOZ_CRASH_UNSAFE_PRINTF("Compositor crashed (%s) proxy: %s",
|
|
GetDesktopEnvironmentIdentifier().get(),
|
|
WaylandProxy::GetState());
|
|
+#endif
|
|
}
|
|
|
|
nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay)
|
|
diff --git a/xpcom/base/nsSystemInfo.cpp b/xpcom/base/nsSystemInfo.cpp
|
|
index 731f169..8a5e2b9 100644
|
|
--- a/xpcom/base/nsSystemInfo.cpp
|
|
+++ b/xpcom/base/nsSystemInfo.cpp
|
|
@@ -85,6 +85,10 @@
|
|
# include "mozilla/SandboxInfo.h"
|
|
#endif
|
|
|
|
+#ifdef XP_HAIKU
|
|
+# include <kernel/OS.h>
|
|
+#endif
|
|
+
|
|
// Slot for NS_InitXPCOM to pass information to nsSystemInfo::Init.
|
|
// Only set to nonzero (potentially) if XP_UNIX. On such systems, the
|
|
// system call to discover the appropriate value is not thread-safe,
|
|
@@ -1557,7 +1561,15 @@ nsresult nsSystemInfo::Init() {
|
|
SetInt32Property(u"pagesize"_ns, PR_GetPageSize());
|
|
SetInt32Property(u"pageshift"_ns, PR_GetPageShift());
|
|
SetInt32Property(u"memmapalign"_ns, PR_GetMemMapAlignment());
|
|
+#ifdef XP_HAIKU
|
|
+ { // workaround
|
|
+ system_info info;
|
|
+ get_system_info(&info);
|
|
+ SetUint64Property(u"memsize"_ns, info.max_pages * B_PAGE_SIZE);
|
|
+ }
|
|
+#else
|
|
SetUint64Property(u"memsize"_ns, PR_GetPhysicalMemorySize());
|
|
+#endif
|
|
SetUint32Property(u"umask"_ns, nsSystemInfo::gUserUmask);
|
|
|
|
#ifdef HAVE_64BIT_BUILD
|
|
diff --git a/xpcom/build/BinaryPath.h b/xpcom/build/BinaryPath.h
|
|
index 1718caa..64de0b2 100644
|
|
--- a/xpcom/build/BinaryPath.h
|
|
+++ b/xpcom/build/BinaryPath.h
|
|
@@ -24,6 +24,10 @@
|
|
#if defined(__OpenBSD__)
|
|
# include <sys/stat.h>
|
|
#endif
|
|
+#if defined(XP_HAIKU)
|
|
+# include <OS.h>
|
|
+# include <image.h>
|
|
+#endif
|
|
#include "mozilla/UniquePtr.h"
|
|
#include "mozilla/UniquePtrExtensions.h"
|
|
|
|
@@ -273,6 +277,21 @@ class BinaryPath {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
+#elif defined(XP_HAIKU)
|
|
+ static nsresult Get(char aResult[MAXPATHLEN]) {
|
|
+ image_info info;
|
|
+ int32 cookie = 0;
|
|
+
|
|
+ while (get_next_image_info(B_CURRENT_TEAM, &cookie, &info) >= B_OK) {
|
|
+ if (info.type == B_APP_IMAGE) {
|
|
+ strlcpy(aResult, info.name, MAXPATHLEN - 1);
|
|
+ return NS_OK;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
#else
|
|
# error Oops, you need platform-specific code here
|
|
#endif
|
|
diff --git a/xpcom/reflect/xptcall/md/unix/moz.build b/xpcom/reflect/xptcall/md/unix/moz.build
|
|
index 6c47f0b..ef375d4 100644
|
|
--- a/xpcom/reflect/xptcall/md/unix/moz.build
|
|
+++ b/xpcom/reflect/xptcall/md/unix/moz.build
|
|
@@ -28,6 +28,7 @@ if CONFIG["OS_ARCH"] in (
|
|
"Bitrig",
|
|
"DragonFly",
|
|
"FreeBSD",
|
|
+ "Haiku",
|
|
"NetBSD",
|
|
"OpenBSD",
|
|
"SunOS",
|
|
diff --git a/xpcom/threads/nsProcessCommon.cpp b/xpcom/threads/nsProcessCommon.cpp
|
|
index b4d9998..ccbc6b8 100644
|
|
--- a/xpcom/threads/nsProcessCommon.cpp
|
|
+++ b/xpcom/threads/nsProcessCommon.cpp
|
|
@@ -41,7 +41,11 @@
|
|
# include "base/process_util.h"
|
|
# endif
|
|
# include <sys/wait.h>
|
|
-# include <sys/errno.h>
|
|
+# ifdef XP_HAIKU
|
|
+# include <errno.h>
|
|
+# else
|
|
+# include <sys/errno.h>
|
|
+# endif
|
|
# endif
|
|
# include <sys/types.h>
|
|
# include <signal.h>
|
|
--
|
|
2.52.0
|
|
|