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
=== modified file 'src/zeitgeist-data-source-registry.c'
--- src/zeitgeist-data-source-registry.c 2010-11-17 09:27:57 +0000
+++ src/zeitgeist-data-source-registry.c 2011-02-03 13:31:55 +0000
@@ -209,14 +209,14 @@
209209
210 if (g_strcmp0 (signal_name, "DataSourceRegistered") == 0)210 if (g_strcmp0 (signal_name, "DataSourceRegistered") == 0)
211 {211 {
212 src = zeitgeist_data_source_new_from_variant (parameters); // FIXME: ref?212 src = zeitgeist_data_source_new_from_variant (g_variant_get_child_value (parameters, 0)); // FIXME: ref?
213 g_signal_emit (self, _registry_signals[SOURCE_REGISTERED],213 g_signal_emit (self, _registry_signals[SOURCE_REGISTERED],
214 0, src);214 0, src);
215 g_object_unref (src);215 g_object_unref (src);
216 }216 }
217 else if (g_strcmp0 (signal_name, "DataSourceDisconnected") == 0)217 else if (g_strcmp0 (signal_name, "DataSourceDisconnected") == 0)
218 {218 {
219 src = zeitgeist_data_source_new_from_variant (parameters); // FIXME: ref?219 src = zeitgeist_data_source_new_from_variant (g_variant_get_child_value (parameters, 0)); // FIXME: ref?
220 g_signal_emit (self, _registry_signals[SOURCE_DISCONNECTED],220 g_signal_emit (self, _registry_signals[SOURCE_DISCONNECTED],
221 0, src);221 0, src);
222 g_object_unref (src);222 g_object_unref (src);
@@ -533,7 +533,7 @@
533 }533 }
534534
535 /* Grab a ref on the GDBusConnection as well */535 /* Grab a ref on the GDBusConnection as well */
536 priv->connection = G_DBUS_CONNECTION (g_object_ref (source_object));536 priv->connection = G_DBUS_CONNECTION (g_object_ref (g_dbus_proxy_get_connection (priv->registry)));
537537
538 /* Connect to all DBus signals from the data source registry */538 /* Connect to all DBus signals from the data source registry */
539 priv->dbus_signals_id = g_dbus_connection_signal_subscribe (539 priv->dbus_signals_id = g_dbus_connection_signal_subscribe (
540540
=== modified file 'src/zeitgeist-data-source.c'
--- src/zeitgeist-data-source.c 2010-11-16 12:59:30 +0000
+++ src/zeitgeist-data-source.c 2011-02-03 13:31:55 +0000
@@ -111,11 +111,12 @@
111/**111/**
112 * zeitgeist_data_source_new_from_variant:112 * zeitgeist_data_source_new_from_variant:
113 * @event: A #GVariant with signature defined in113 * @event: A #GVariant with signature defined in
114 * #ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE. If @src is a floating114 * #ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE.
115 * reference the floating reference will be consumed.115 * If @src is a floating reference the floating reference
116 * will be consumed.
116 *117 *
117 * Parse the data in a #GVariant and build a #ZeitgeistDataSource from it.118 * Parse the data in a #GVariant and build a #ZeitgeistDataSource from it.
118 * The reverse operation of this is zeitgeist_data_source_to_variant().119 * The reverse operation of this is zeitgeist_data_source_to_variant_full().
119 *120 *
120 * Returns: A newly allocated #ZeitgeistDataSource filled with the metadata and121 * Returns: A newly allocated #ZeitgeistDataSource filled with the metadata and
121 * event templates described by @src. The returned data source will122 * event templates described by @src. The returned data source will
@@ -138,7 +139,7 @@
138139
139 /* Parse the variant */140 /* Parse the variant */
140 g_variant_ref_sink (src);141 g_variant_ref_sink (src);
141 g_variant_get (src, ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE,142 g_variant_get (src, ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE,
142 &unique_id, &name, &description,143 &unique_id, &name, &description,
143 NULL, &running, &timestamp, &enabled);144 NULL, &running, &timestamp, &enabled);
144145
@@ -405,6 +406,53 @@
405}406}
406407
407/**408/**
409 * zeitgeist_data_source_to_variant_full:
410 * @events: A #ZeitgeistDataSource. If this is a
411 * floating reference it will be consumed
412 *
413 * Convert a #ZeitgeistDataSource to a #GVariant with signature
414 * #ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE.
415 *
416 * Returns: A floating reference to a #GVariant as described above. Unless the
417 * floating reference is consumed somewhere you must free it with
418 * g_variant_unref().
419 */
420GVariant*
421zeitgeist_data_source_to_variant_full (ZeitgeistDataSource *src)
422{
423 GVariantBuilder b;
424 GPtrArray *event_templates;
425 GVariant *vevent_templates;
426 const gchar *str;
427
428 g_return_val_if_fail (ZEITGEIST_IS_DATA_SOURCE (src), NULL);
429
430 g_object_ref_sink (src);
431 g_variant_builder_init (&b, ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_TYPE);
432
433 /* Add static metadata */
434 g_variant_builder_add (&b, "s", (str = zeitgeist_data_source_get_unique_id(src), str ? str : ""));
435 g_variant_builder_add (&b, "s", (str = zeitgeist_data_source_get_name(src), str ? str : ""));
436 g_variant_builder_add (&b, "s", (str = zeitgeist_data_source_get_description(src), str ? str : ""));
437
438 /* Add event templates */
439 event_templates = g_ptr_array_ref (
440 zeitgeist_data_source_get_event_templates (src));
441 vevent_templates = zeitgeist_events_to_variant (event_templates);
442 g_variant_builder_add_value (&b, vevent_templates /* own ref */);
443
444 /* Add volatile metadata */
445 g_variant_builder_add (&b, "b", zeitgeist_data_source_is_running(src));
446 g_variant_builder_add (&b, "x", zeitgeist_data_source_get_timestamp(src));
447 g_variant_builder_add (&b, "b", zeitgeist_data_source_is_enabled(src));
448
449 /* Clean up */
450 g_object_unref (src);
451
452 return g_variant_builder_end (&b);
453}
454
455/**
408 * zeitgeist_data_source_to_variant:456 * zeitgeist_data_source_to_variant:
409 * @events: A #ZeitgeistDataSource. If this is a457 * @events: A #ZeitgeistDataSource. If this is a
410 * floating reference it will be consumed458 * floating reference it will be consumed
@@ -440,11 +488,6 @@
440 vevent_templates = zeitgeist_events_to_variant (event_templates);488 vevent_templates = zeitgeist_events_to_variant (event_templates);
441 g_variant_builder_add_value (&b, vevent_templates /* own ref */);489 g_variant_builder_add_value (&b, vevent_templates /* own ref */);
442490
443 /* Add volatile metadata */
444 g_variant_builder_add (&b, "b", zeitgeist_data_source_is_running(src));
445 g_variant_builder_add (&b, "x", zeitgeist_data_source_get_timestamp(src));
446 g_variant_builder_add (&b, "b", zeitgeist_data_source_is_enabled(src));
447
448 /* Clean up */491 /* Clean up */
449 g_object_unref (src);492 g_object_unref (src);
450493
@@ -482,7 +525,7 @@
482 {525 {
483 src = ZEITGEIST_DATA_SOURCE (g_ptr_array_index (sources, i));526 src = ZEITGEIST_DATA_SOURCE (g_ptr_array_index (sources, i));
484 g_object_ref_sink (src);527 g_object_ref_sink (src);
485 vsrc = zeitgeist_data_source_to_variant (src);528 vsrc = zeitgeist_data_source_to_variant_full (src);
486 g_variant_builder_add_value (&b, vsrc);529 g_variant_builder_add_value (&b, vsrc);
487 g_object_unref (src);530 g_object_unref (src);
488 }531 }
@@ -498,8 +541,9 @@
498/**541/**
499 * zeitgeist_data_sources_from_variant:542 * zeitgeist_data_sources_from_variant:
500 * @sources: A #GVariant with signature as an array of543 * @sources: A #GVariant with signature as an array of
501 * #ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE. If @sources is floating544 * #ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE.
502 * this method will consume the floating reference.545 * If @sources is floating this method will consume
546 * the floating reference.
503 *547 *
504 * Returns: A reference to a #GPtrArray of #ZeitgeistDataSource<!-- -->s.548 * Returns: A reference to a #GPtrArray of #ZeitgeistDataSource<!-- -->s.
505 * All the events will be floating references, and the549 * All the events will be floating references, and the
506550
=== modified file 'src/zeitgeist-data-source.h'
--- src/zeitgeist-data-source.h 2010-11-16 12:59:30 +0000
+++ src/zeitgeist-data-source.h 2011-02-03 13:31:55 +0000
@@ -99,7 +99,8 @@
99void zeitgeist_data_source_set_enabled (ZeitgeistDataSource *src,99void zeitgeist_data_source_set_enabled (ZeitgeistDataSource *src,
100 gboolean enabled);100 gboolean enabled);
101101
102GVariant* zeitgeist_data_source_to_variant (ZeitgeistDataSource *src);102GVariant* zeitgeist_data_source_to_variant (ZeitgeistDataSource *src);
103GVariant* zeitgeist_data_source_to_variant_full (ZeitgeistDataSource *src);
103104
104GVariant* zeitgeist_data_sources_to_variant (GPtrArray *sources);105GVariant* zeitgeist_data_sources_to_variant (GPtrArray *sources);
105106
@@ -110,15 +111,29 @@
110 *111 *
111 * The #GVariant signature for a serialized #ZeitgeistDataSource112 * The #GVariant signature for a serialized #ZeitgeistDataSource
112 */113 */
113#define ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE "(sssa(asaasay)bxb)"114#define ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE "(sssa(asaasay))"
114115
115/**116/**
116 * ZEITGEIST_DATA_SOURCE_VARIANT_TYPE:117 * ZEITGEIST_DATA_SOURCE_VARIANT_TYPE:
117 *118 *
118 * The #GVariantType of #ZEITGEIST_DATA_SOURCE_SIGNATURE119 * The #GVariantType of #ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE
119 */120 */
120#define ZEITGEIST_DATA_SOURCE_VARIANT_TYPE G_VARIANT_TYPE(ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE)121#define ZEITGEIST_DATA_SOURCE_VARIANT_TYPE G_VARIANT_TYPE(ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE)
121122
123/**
124 * ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE:
125 *
126 * The #GVariant signature for a serialized #ZeitgeistDataSource
127 */
128#define ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE "(sssa(asaasay)bxb)"
129
130/**
131 * ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_TYPE:
132 *
133 * The #GVariantType of #ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE
134 */
135#define ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_TYPE G_VARIANT_TYPE(ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE)
136
122G_END_DECLS137G_END_DECLS
123138
124#endif /* _ZEITGEIST_DATA_SOURCE_H_ */139#endif /* _ZEITGEIST_DATA_SOURCE_H_ */

Subscribers

People subscribed via source and target branches