Merge lp:~mhr3/libzeitgeist/various-fixes into lp:libzeitgeist

Proposed by Michal Hruby
Status: Merged
Merged at revision: 189
Proposed branch: lp:~mhr3/libzeitgeist/various-fixes
Merge into: lp:libzeitgeist
Diff against target: 191 lines (+77/-18)
3 files modified
src/zeitgeist-data-source-registry.c (+3/-3)
src/zeitgeist-data-source.c (+56/-12)
src/zeitgeist-data-source.h (+18/-3)
To merge this branch: bzr merge lp:~mhr3/libzeitgeist/various-fixes
Reviewer Review Type Date Requested Status
Mikkel Kamstrup Erlandsen Pending
Review via email: mp+48467@code.launchpad.net

Description of the change

Fixes DataSourceRegistry class.

To post a comment you must log in.
lp:~mhr3/libzeitgeist/various-fixes updated
189. By Mikkel Kamstrup Erlandsen

Merge Michal Hruby's branch: lp:~mhr3/libzeitgeist/various-fixes

 * Fixes some bad casts in src/zeitgeist-data-source-registry.c

 * Fix unpacking of variants in src/zeitgeist-data-source-registry.c

 * Add new method zeitgeist_data_source_to_variant_full()

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/zeitgeist-data-source-registry.c'
2--- src/zeitgeist-data-source-registry.c 2010-11-17 09:27:57 +0000
3+++ src/zeitgeist-data-source-registry.c 2011-02-03 13:31:55 +0000
4@@ -209,14 +209,14 @@
5
6 if (g_strcmp0 (signal_name, "DataSourceRegistered") == 0)
7 {
8- src = zeitgeist_data_source_new_from_variant (parameters); // FIXME: ref?
9+ src = zeitgeist_data_source_new_from_variant (g_variant_get_child_value (parameters, 0)); // FIXME: ref?
10 g_signal_emit (self, _registry_signals[SOURCE_REGISTERED],
11 0, src);
12 g_object_unref (src);
13 }
14 else if (g_strcmp0 (signal_name, "DataSourceDisconnected") == 0)
15 {
16- src = zeitgeist_data_source_new_from_variant (parameters); // FIXME: ref?
17+ src = zeitgeist_data_source_new_from_variant (g_variant_get_child_value (parameters, 0)); // FIXME: ref?
18 g_signal_emit (self, _registry_signals[SOURCE_DISCONNECTED],
19 0, src);
20 g_object_unref (src);
21@@ -533,7 +533,7 @@
22 }
23
24 /* Grab a ref on the GDBusConnection as well */
25- priv->connection = G_DBUS_CONNECTION (g_object_ref (source_object));
26+ priv->connection = G_DBUS_CONNECTION (g_object_ref (g_dbus_proxy_get_connection (priv->registry)));
27
28 /* Connect to all DBus signals from the data source registry */
29 priv->dbus_signals_id = g_dbus_connection_signal_subscribe (
30
31=== modified file 'src/zeitgeist-data-source.c'
32--- src/zeitgeist-data-source.c 2010-11-16 12:59:30 +0000
33+++ src/zeitgeist-data-source.c 2011-02-03 13:31:55 +0000
34@@ -111,11 +111,12 @@
35 /**
36 * zeitgeist_data_source_new_from_variant:
37 * @event: A #GVariant with signature defined in
38- * #ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE. If @src is a floating
39- * reference the floating reference will be consumed.
40+ * #ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE.
41+ * If @src is a floating reference the floating reference
42+ * will be consumed.
43 *
44 * Parse the data in a #GVariant and build a #ZeitgeistDataSource from it.
45- * The reverse operation of this is zeitgeist_data_source_to_variant().
46+ * The reverse operation of this is zeitgeist_data_source_to_variant_full().
47 *
48 * Returns: A newly allocated #ZeitgeistDataSource filled with the metadata and
49 * event templates described by @src. The returned data source will
50@@ -138,7 +139,7 @@
51
52 /* Parse the variant */
53 g_variant_ref_sink (src);
54- g_variant_get (src, ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE,
55+ g_variant_get (src, ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE,
56 &unique_id, &name, &description,
57 NULL, &running, &timestamp, &enabled);
58
59@@ -405,6 +406,53 @@
60 }
61
62 /**
63+ * zeitgeist_data_source_to_variant_full:
64+ * @events: A #ZeitgeistDataSource. If this is a
65+ * floating reference it will be consumed
66+ *
67+ * Convert a #ZeitgeistDataSource to a #GVariant with signature
68+ * #ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE.
69+ *
70+ * Returns: A floating reference to a #GVariant as described above. Unless the
71+ * floating reference is consumed somewhere you must free it with
72+ * g_variant_unref().
73+ */
74+GVariant*
75+zeitgeist_data_source_to_variant_full (ZeitgeistDataSource *src)
76+{
77+ GVariantBuilder b;
78+ GPtrArray *event_templates;
79+ GVariant *vevent_templates;
80+ const gchar *str;
81+
82+ g_return_val_if_fail (ZEITGEIST_IS_DATA_SOURCE (src), NULL);
83+
84+ g_object_ref_sink (src);
85+ g_variant_builder_init (&b, ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_TYPE);
86+
87+ /* Add static metadata */
88+ g_variant_builder_add (&b, "s", (str = zeitgeist_data_source_get_unique_id(src), str ? str : ""));
89+ g_variant_builder_add (&b, "s", (str = zeitgeist_data_source_get_name(src), str ? str : ""));
90+ g_variant_builder_add (&b, "s", (str = zeitgeist_data_source_get_description(src), str ? str : ""));
91+
92+ /* Add event templates */
93+ event_templates = g_ptr_array_ref (
94+ zeitgeist_data_source_get_event_templates (src));
95+ vevent_templates = zeitgeist_events_to_variant (event_templates);
96+ g_variant_builder_add_value (&b, vevent_templates /* own ref */);
97+
98+ /* Add volatile metadata */
99+ g_variant_builder_add (&b, "b", zeitgeist_data_source_is_running(src));
100+ g_variant_builder_add (&b, "x", zeitgeist_data_source_get_timestamp(src));
101+ g_variant_builder_add (&b, "b", zeitgeist_data_source_is_enabled(src));
102+
103+ /* Clean up */
104+ g_object_unref (src);
105+
106+ return g_variant_builder_end (&b);
107+}
108+
109+/**
110 * zeitgeist_data_source_to_variant:
111 * @events: A #ZeitgeistDataSource. If this is a
112 * floating reference it will be consumed
113@@ -440,11 +488,6 @@
114 vevent_templates = zeitgeist_events_to_variant (event_templates);
115 g_variant_builder_add_value (&b, vevent_templates /* own ref */);
116
117- /* Add volatile metadata */
118- g_variant_builder_add (&b, "b", zeitgeist_data_source_is_running(src));
119- g_variant_builder_add (&b, "x", zeitgeist_data_source_get_timestamp(src));
120- g_variant_builder_add (&b, "b", zeitgeist_data_source_is_enabled(src));
121-
122 /* Clean up */
123 g_object_unref (src);
124
125@@ -482,7 +525,7 @@
126 {
127 src = ZEITGEIST_DATA_SOURCE (g_ptr_array_index (sources, i));
128 g_object_ref_sink (src);
129- vsrc = zeitgeist_data_source_to_variant (src);
130+ vsrc = zeitgeist_data_source_to_variant_full (src);
131 g_variant_builder_add_value (&b, vsrc);
132 g_object_unref (src);
133 }
134@@ -498,8 +541,9 @@
135 /**
136 * zeitgeist_data_sources_from_variant:
137 * @sources: A #GVariant with signature as an array of
138- * #ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE. If @sources is floating
139- * this method will consume the floating reference.
140+ * #ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE.
141+ * If @sources is floating this method will consume
142+ * the floating reference.
143 *
144 * Returns: A reference to a #GPtrArray of #ZeitgeistDataSource<!-- -->s.
145 * All the events will be floating references, and the
146
147=== modified file 'src/zeitgeist-data-source.h'
148--- src/zeitgeist-data-source.h 2010-11-16 12:59:30 +0000
149+++ src/zeitgeist-data-source.h 2011-02-03 13:31:55 +0000
150@@ -99,7 +99,8 @@
151 void zeitgeist_data_source_set_enabled (ZeitgeistDataSource *src,
152 gboolean enabled);
153
154-GVariant* zeitgeist_data_source_to_variant (ZeitgeistDataSource *src);
155+GVariant* zeitgeist_data_source_to_variant (ZeitgeistDataSource *src);
156+GVariant* zeitgeist_data_source_to_variant_full (ZeitgeistDataSource *src);
157
158 GVariant* zeitgeist_data_sources_to_variant (GPtrArray *sources);
159
160@@ -110,15 +111,29 @@
161 *
162 * The #GVariant signature for a serialized #ZeitgeistDataSource
163 */
164-#define ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE "(sssa(asaasay)bxb)"
165+#define ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE "(sssa(asaasay))"
166
167 /**
168 * ZEITGEIST_DATA_SOURCE_VARIANT_TYPE:
169 *
170- * The #GVariantType of #ZEITGEIST_DATA_SOURCE_SIGNATURE
171+ * The #GVariantType of #ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE
172 */
173 #define ZEITGEIST_DATA_SOURCE_VARIANT_TYPE G_VARIANT_TYPE(ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE)
174
175+/**
176+ * ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE:
177+ *
178+ * The #GVariant signature for a serialized #ZeitgeistDataSource
179+ */
180+#define ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE "(sssa(asaasay)bxb)"
181+
182+/**
183+ * ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_TYPE:
184+ *
185+ * The #GVariantType of #ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE
186+ */
187+#define ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_TYPE G_VARIANT_TYPE(ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE)
188+
189 G_END_DECLS
190
191 #endif /* _ZEITGEIST_DATA_SOURCE_H_ */

Subscribers

People subscribed via source and target branches