Imported Upstream version 6.12.0.113

Former-commit-id: 16c3009c55743665b8bfab5c90c620198e92ea79
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2020-12-08 08:41:48 +00:00
parent ae096f9387
commit 6e4ea140c9
53 changed files with 832 additions and 742 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ generated by GNU Autoconf 2.69. Invocation command line was
## Platform. ##
## --------- ##
hostname = az-ubuntu-generald40180
hostname = az-ubuntu-general774710
uname -m = x86_64
uname -r = 4.15.0-1100-azure
uname -s = Linux
@@ -747,7 +747,7 @@ generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_COMMANDS =
$ ./config.status
on az-ubuntu-generald40180
on az-ubuntu-general774710
config.status:1238: creating Makefile
config.status:1238: creating bdw-gc.pc

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
b6a6639db1e54ab2a7bc8b430b7f24997aa0cdd9
78b6ba732476dbe70d4d2b99d4551d87607afc09

View File

@@ -231,7 +231,10 @@ class GtkPackage (GitHubPackage):
# https://devdiv.visualstudio.com/DevDiv/_workitems/edit/993471
'patches/gtk/gtk-pboard-types.patch',
'patches/gtk/define-NSPasteboardTypeURL.patch',
'patches/gtk/Fix-1080409-StackOverflow-exception-opening-Gtk-host.patch'
'patches/gtk/Fix-1080409-StackOverflow-exception-opening-Gtk-host.patch',
# https://dev.azure.com/devdiv/DevDiv/_workitems/edit/1092021/
'patches/gtk/0078-Optimize-querying-symbolic-hotkeys.patch'
])
def prep(self):

View File

@@ -0,0 +1,87 @@
From ba68d11840da0ea10b863c598b1947fa1090a557 Mon Sep 17 00:00:00 2001
From: Marius Ungureanu <maungu@microsoft.com>
Date: Wed, 2 Dec 2020 17:39:31 +0200
Subject: [PATCH] Optimize querying symbolic hotkeys
This API is not threadsafe and there is no alternative API for querying
whether the symbolic hotkeys have changed.
Instead, we can check the last modification time of the preferences file
and only update the symbolic hotkeys _iff_ the underlying storage file
has changed.
---
gdk/quartz/gdkkeys-quartz.c | 40 +++++++++++++++++++++++++++++++++++--
1 file changed, 38 insertions(+), 2 deletions(-)
diff --git a/gdk/quartz/gdkkeys-quartz.c b/gdk/quartz/gdkkeys-quartz.c
index 5a4d88787d..8ee8628dd2 100644
--- a/gdk/quartz/gdkkeys-quartz.c
+++ b/gdk/quartz/gdkkeys-quartz.c
@@ -58,6 +58,8 @@
#include "gdkprivate-quartz.h"
#include <Foundation/Foundation.h>
+#include <glib/gstdio.h>
+
#define NUM_KEYCODES 128
#define KEYVALS_PER_KEYCODE 4
@@ -68,6 +70,7 @@ static GdkKeymap *default_keymap = NULL;
*/
static guint *keyval_array = NULL;
static CFArrayRef global_hotkeys = NULL;
+static struct timespec preferences_last_mtime = {};
static inline UniChar
macroman2ucs (unsigned char c)
@@ -815,12 +818,45 @@ gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap,
return TRUE;
}
+static gboolean
+should_update_symbolic_hotkeys ()
+{
+ gchar *path_segments[] = {
+ g_get_home_dir(),
+ "Library",
+ "Preferences",
+ "com.apple.symbolichotkeys.plist",
+ NULL,
+ };
+
+ gchar *preferences_file = g_build_pathv(G_DIR_SEPARATOR_S, path_segments);
+ GStatBuf buf;
+
+ int res = g_stat(preferences_file, &buf);
+ g_free(preferences_file);
+
+ if (res != 0) {
+ /* In case we have any IO error, ensure correctness by querying */
+ return TRUE;
+ }
+
+ bool preferences_file_modified = preferences_last_mtime.tv_sec != buf.st_mtimespec.tv_sec
+ && preferences_last_mtime.tv_nsec != buf.st_mtimespec.tv_nsec;
+
+ preferences_last_mtime.tv_sec = buf.st_mtimespec.tv_sec;
+ preferences_last_mtime.tv_nsec = buf.st_mtimespec.tv_nsec;
+
+ return preferences_file_modified;
+}
+
void
_gdk_quartz_update_symbolic_hotkeys ()
{
- _gdk_quartz_release_symbolic_hotkeys ();
+ if (should_update_symbolic_hotkeys ()) {
+ _gdk_quartz_release_symbolic_hotkeys ();
- CopySymbolicHotKeys (&global_hotkeys);
+ CopySymbolicHotKeys (&global_hotkeys);
+ }
}
void
--
2.21.1 (Apple Git-122.3)