summaryrefslogtreecommitdiff
path: root/src/core/xprops.c
diff options
context:
space:
mode:
authorOwen W. Taylor <otaylor@fishsoup.net>2011-06-08 10:01:30 -0400
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2017-03-03 20:40:20 +0200
commitf08aacbb60a60ad59ca98bc90b444008a39a6955 (patch)
tree945e18e7e84efbb7d2148a9ead68a009d57b488e /src/core/xprops.c
parent9af4756999c32a2fccd3ab5ae110f1b30798f977 (diff)
downloadmetacity-f08aacbb60a60ad59ca98bc90b444008a39a6955.tar.gz
support properties with lists of XSyncCounter
Add META_PROP_VALUE_SYNC_COUNTER_LIST for a property that contains multiple XSyncCounter values. https://bugzilla.gnome.org/show_bug.cgi?id=685463
Diffstat (limited to 'src/core/xprops.c')
-rw-r--r--src/core/xprops.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/core/xprops.c b/src/core/xprops.c
index 81267fe3..ae45f5f0 100644
--- a/src/core/xprops.c
+++ b/src/core/xprops.c
@@ -578,6 +578,21 @@ counter_from_results (GetPropertyResults *results,
return TRUE;
}
+static gboolean
+counter_list_from_results (GetPropertyResults *results,
+ XSyncCounter **counters_p,
+ int *n_counters_p)
+{
+ if (!validate_or_free_results (results, 32, XA_CARDINAL, FALSE))
+ return FALSE;
+
+ *counters_p = (XSyncCounter*) results->prop;
+ *n_counters_p = results->n_items;
+ results->prop = NULL;
+
+ return TRUE;
+}
+
gboolean
meta_prop_get_window (MetaDisplay *display,
Window xwindow,
@@ -1033,6 +1048,7 @@ meta_prop_get_values (MetaDisplay *display,
values[i].required_type = XA_WM_SIZE_HINTS;
break;
case META_PROP_VALUE_SYNC_COUNTER:
+ case META_PROP_VALUE_SYNC_COUNTER_LIST:
values[i].required_type = XA_CARDINAL;
break;
default:
@@ -1190,6 +1206,12 @@ meta_prop_get_values (MetaDisplay *display,
&values[i].v.xcounter))
values[i].type = META_PROP_VALUE_INVALID;
break;
+ case META_PROP_VALUE_SYNC_COUNTER_LIST:
+ if (!counter_list_from_results (&results,
+ &values[i].v.xcounter_list.counters,
+ &values[i].v.xcounter_list.n_counters))
+ values[i].type = META_PROP_VALUE_INVALID;
+ break;
default:
break;
}
@@ -1244,6 +1266,9 @@ free_value (MetaPropValue *value)
break;
case META_PROP_VALUE_SYNC_COUNTER:
break;
+ case META_PROP_VALUE_SYNC_COUNTER_LIST:
+ meta_XFree (value->v.xcounter_list.counters);
+ break;
default:
break;
}