[mutter] Add meta_window_get_stable_sequence
- From: Colin Walters <walters src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [mutter] Add meta_window_get_stable_sequence
- Date: Tue, 22 Sep 2009 16:43:41 +0000 (UTC)
commit d399141d13de269a23ffd8f5c773cf004a6b1c4f
Author: Colin Walters <walters verbum org>
Date: Fri Sep 18 20:50:11 2009 -0400
Add meta_window_get_stable_sequence
Useful for plugins which want to order windows in a stable
fashion.
https://bugzilla.gnome.org/show_bug.cgi?id=595882
src/core/display-private.h | 9 +++++++++
src/core/window-private.h | 3 +++
src/core/window.c | 24 ++++++++++++++++++++++++
src/include/window.h | 1 +
4 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/src/core/display-private.h b/src/core/display-private.h
index aca7791..2858c19 100644
--- a/src/core/display-private.h
+++ b/src/core/display-private.h
@@ -150,6 +150,15 @@ struct _MetaDisplay
guint32 current_time;
+ /* We maintain a sequence counter, incremented for each #MetaWindow
+ * created. This is exposed by meta_window_get_stable_sequence()
+ * but is otherwise not used inside mutter.
+ *
+ * It can be useful to plugins which want to sort windows in a
+ * stable fashion.
+ */
+ guint32 window_sequence_counter;
+
/* Pings which we're waiting for a reply from */
GSList *pending_pings;
diff --git a/src/core/window-private.h b/src/core/window-private.h
index 0e7fb98..9bc8089 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -316,6 +316,9 @@ struct _MetaWindow
*/
int unmaps_pending;
+ /* See docs for meta_window_get_stable_sequence() */
+ guint32 stable_sequence;
+
/* set to the most recent user-interaction event timestamp that we
know about for this window */
guint32 net_wm_user_time;
diff --git a/src/core/window.c b/src/core/window.c
index a3997a7..5d184c0 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -802,6 +802,10 @@ meta_window_new_with_attrs (MetaDisplay *display,
meta_display_register_x_window (display, &window->xwindow, window);
+ /* Assign this #MetaWindow a sequence number which can be used
+ * for sorting.
+ */
+ window->stable_sequence = ++display->window_sequence_counter;
/* assign the window to its group, or create a new group if needed
*/
@@ -8532,6 +8536,26 @@ meta_window_set_user_time (MetaWindow *window,
g_object_notify (G_OBJECT (window), "user-time");
}
+/**
+ * meta_window_get_stable_sequence:
+ * @window: A #MetaWindow
+ *
+ * The stable sequence number is a monotonicially increasing
+ * unique integer assigned to each #MetaWindow upon creation.
+ *
+ * This number can be useful for sorting windows in a stable
+ * fashion.
+ *
+ * Returns: Internal sequence number for this window
+ */
+guint32
+meta_window_get_stable_sequence (MetaWindow *window)
+{
+ g_return_val_if_fail (META_IS_WINDOW (window), 0);
+
+ return window->stable_sequence;
+}
+
/* Sets the demands_attention hint on a window, but only
* if it's at least partially obscured (see #305882).
*/
diff --git a/src/include/window.h b/src/include/window.h
index 7823470..15f4f25 100644
--- a/src/include/window.h
+++ b/src/include/window.h
@@ -118,6 +118,7 @@ const char *meta_window_get_title (MetaWindow *window);
MetaWindow *meta_window_get_transient_for (MetaWindow *window);
void meta_window_delete (MetaWindow *window,
guint32 timestamp);
+guint meta_window_get_stable_sequence (MetaWindow *window);
guint32 meta_window_get_user_time (MetaWindow *window);
int meta_window_get_pid (MetaWindow *window);
const char *meta_window_get_client_machine (MetaWindow *window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]