summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2017-11-17 15:39:08 -0500
committerMatthias Clasen <mclasen@redhat.com>2017-11-17 15:39:08 -0500
commitdbb18ad5d88584b14bffea31bd9f8327d2d859dd (patch)
treeafbf6b5317a37ab4b5dcbad8ecc154fdf151064f
parentfc579b121a3f93b1c692bdff189162770983cf85 (diff)
downloadgtk+-dbb18ad5d88584b14bffea31bd9f8327d2d859dd.tar.gz
gdk: Add a private method to get a server timestamp
This is needed in the clipboard code. We don't make it public, since that code is destined to eventually live in gdk anyway.
-rw-r--r--gdk/broadway/gdkdisplay-broadway.c7
-rw-r--r--gdk/gdk-private.h2
-rw-r--r--gdk/gdkdisplay.c12
-rw-r--r--gdk/gdkdisplayprivate.h1
-rw-r--r--gdk/win32/gdkdisplay-win32.c7
-rw-r--r--gdk/x11/gdkdisplay-x11.c7
6 files changed, 36 insertions, 0 deletions
diff --git a/gdk/broadway/gdkdisplay-broadway.c b/gdk/broadway/gdkdisplay-broadway.c
index 0d8dbc8b04..c5eede1a94 100644
--- a/gdk/broadway/gdkdisplay-broadway.c
+++ b/gdk/broadway/gdkdisplay-broadway.c
@@ -317,6 +317,12 @@ gdk_broadway_display_get_setting (GdkDisplay *display,
return FALSE;
}
+static guint32
+gdk_broadway_display_get_last_seen_time (GdkDisplay *display)
+{
+ return _gdk_broadway_server_get_last_seen_time (GDK_BROADWAY_DISPLAY (display)->server);
+}
+
static void
gdk_broadway_display_class_init (GdkBroadwayDisplayClass * class)
{
@@ -364,4 +370,5 @@ gdk_broadway_display_class_init (GdkBroadwayDisplayClass * class)
display_class->get_monitor = gdk_broadway_display_get_monitor;
display_class->get_primary_monitor = gdk_broadway_display_get_primary_monitor;
display_class->get_setting = gdk_broadway_display_get_setting;
+ display_class->get_last_seen_time = gdk_broadway_display_get_last_seen_time;
}
diff --git a/gdk/gdk-private.h b/gdk/gdk-private.h
index 14554643bf..0c7ca6681f 100644
--- a/gdk/gdk-private.h
+++ b/gdk/gdk-private.h
@@ -39,4 +39,6 @@ void gdk_window_move_to_rect (GdkWindow *window,
GObject * gdk_event_get_user_data (const GdkEvent *event);
+guint32 gdk_display_get_last_seen_time (GdkDisplay *display);
+
#endif /* __GDK__PRIVATE_H__ */
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
index dfe9e3e199..ae09c25339 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
@@ -2013,3 +2013,15 @@ gdk_display_setting_changed (GdkDisplay *display,
{
g_signal_emit (display, signals[SETTING_CHANGED], 0, name);
}
+
+guint32
+gdk_display_get_last_seen_time (GdkDisplay *display)
+{
+ g_return_val_if_fail (GDK_IS_DISPLAY (display), GDK_CURRENT_TIME);
+
+ if (GDK_DISPLAY_GET_CLASS (display)->get_last_seen_time)
+ return GDK_DISPLAY_GET_CLASS (display)->get_last_seen_time (display);
+
+ return GDK_CURRENT_TIME;
+}
+
diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h
index f2927ab6d0..d35f4849f7 100644
--- a/gdk/gdkdisplayprivate.h
+++ b/gdk/gdkdisplayprivate.h
@@ -219,6 +219,7 @@ struct _GdkDisplayClass
gboolean (*get_setting) (GdkDisplay *display,
const char *name,
GValue *value);
+ guint32 (*get_last_seen_time) (GdkDisplay *display);
/* Signals */
void (*opened) (GdkDisplay *display);
diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c
index b3b6013f33..4643f1698b 100644
--- a/gdk/win32/gdkdisplay-win32.c
+++ b/gdk/win32/gdkdisplay-win32.c
@@ -1208,6 +1208,12 @@ gdk_win32_display_get_setting (GdkDisplay *display,
return _gdk_win32_get_setting (name, value);
}
+static guint32
+gdk_win32_display_get_last_seen_time (GdkDisplay *display)
+{
+ return GetMessageTime ();
+}
+
static void
gdk_win32_display_class_init (GdkWin32DisplayClass *klass)
{
@@ -1266,6 +1272,7 @@ gdk_win32_display_class_init (GdkWin32DisplayClass *klass)
#endif
display_class->get_setting = gdk_win32_display_get_setting;
+ display_class->get_last_seen_time = gdk_win32_display_get_last_seen_time;
_gdk_win32_windowing_init ();
}
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index a9d30fc61b..4e022c635b 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -3158,6 +3158,12 @@ gdk_x11_display_get_toplevel_windows (GdkDisplay *display)
return GDK_X11_DISPLAY (display)->toplevels;
}
+static guint32
+gdk_x11_display_get_last_seen_time (GdkDisplay *display)
+{
+ return gdk_x11_get_server_time (GDK_X11_DISPLAY (display)->leader_gdk_window);
+}
+
static void
gdk_x11_display_class_init (GdkX11DisplayClass * class)
{
@@ -3215,6 +3221,7 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
display_class->get_monitor = gdk_x11_display_get_monitor;
display_class->get_primary_monitor = gdk_x11_display_get_primary_monitor;
display_class->get_setting = gdk_x11_display_get_setting;
+ display_class->get_last_seen_time = gdk_x11_display_get_last_seen_time;
_gdk_x11_windowing_init ();
}