patch to update Evolution to 2.32.3
Matthias Apitz
guru at unixarea.de
Thu Jun 7 15:03:43 UTC 2012
Hello,
In May 2011 I fixed some bugs in Evolution based on the original
2.32.3 sources, among other problems this one:
https://bugzilla.gnome.org/show_bug.cgi?id=649433
Now (in May 2012) I see in 10-CURRENT that in our ports tree Evolution is
still on version 2.32.1; attached is a set of patches to update both ports to
2.32.3:
ports/databases/evolution-data-server
evolution-data-server.patch
patch-eds (new file for evolution-data-server/files)
ports/mail/evolution
evolution.patch
patch-calendar_gui_e-cal-model.c (new file for evolution/files)
could some kind soul please commit them to the ports tree;
thanks
HIH
matthias
--
Matthias Apitz
t +49-89-61308 351 - f +49-89-61308 399 - m +49-170-4527211
e <guru at unixarea.de> - w http://www.unixarea.de/
UNIX since V7 on PDP-11 | UNIX on mainframe since ESER 1055 (IBM /370)
UNIX on x86 since SVR4.2 UnixWare 2.1.2 | FreeBSD since 2.2.5
-------------- next part --------------
A non-text attachment was scrubbed...
Name: evolution-data-server.patch
Type: text/x-diff
Size: 972 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20120607/f203da2e/evolution-data-server.bin
-------------- next part --------------
*** addressbook/tests/ebook/test-stress-bookviews.c.orig Thu Apr 21 21:35:36 2011
--- addressbook/tests/ebook/test-stress-bookviews.c Thu Jun 7 08:21:27 2012
***************
*** 100,105 ****
--- 100,106 ----
g_object_unref (view);
e_book_query_unref (query);
+ g_object_unref (book);
return 0;
}
*** calendar/libedata-cal/e-cal-backend.c.orig Thu Apr 21 21:35:36 2011
--- calendar/libedata-cal/e-cal-backend.c Thu Jun 7 08:21:27 2012
***************
*** 44,51 ****
struct _ECalBackendPrivate {
/* The source for this backend */
ESource *source;
- /* signal handler ID for source's 'changed' signal */
- gulong source_changed_id;
/* URI, from source. This is cached, since we return const. */
gchar *uri;
--- 44,49 ----
***************
*** 161,177 ****
ESource *source)
{
if (backend->priv->source != NULL) {
! if (backend->priv->source_changed_id > 0) {
! g_signal_handler_disconnect (
! backend->priv->source,
! backend->priv->source_changed_id);
! backend->priv->source_changed_id = 0;
! }
g_object_unref (backend->priv->source);
}
if (source != NULL)
! backend->priv->source_changed_id = g_signal_connect (
g_object_ref (source), "changed",
G_CALLBACK (source_changed_cb), backend);
--- 159,170 ----
ESource *source)
{
if (backend->priv->source != NULL) {
! g_signal_handlers_disconnect_matched (backend->priv->source, G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, 0, 0, NULL, source_changed_cb, backend);
g_object_unref (backend->priv->source);
}
if (source != NULL)
! g_signal_connect (
g_object_ref (source), "changed",
G_CALLBACK (source_changed_cb), backend);
***************
*** 283,293 ****
g_free (priv->uri);
g_free (priv->cache_dir);
! if (priv->source_changed_id && priv->source) {
! g_signal_handler_disconnect (priv->source, priv->source_changed_id);
! priv->source_changed_id = 0;
}
- g_object_unref (priv->source);
/* Chain up to parent's finalize() method. */
G_OBJECT_CLASS (e_cal_backend_parent_class)->finalize (object);
--- 276,285 ----
g_free (priv->uri);
g_free (priv->cache_dir);
! if (priv->source) {
! g_signal_handlers_disconnect_matched (priv->source, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, object);
! g_object_unref (priv->source);
}
/* Chain up to parent's finalize() method. */
G_OBJECT_CLASS (e_cal_backend_parent_class)->finalize (object);
***************
*** 376,383 ****
backend->priv->clients_mutex = g_mutex_new ();
backend->priv->queries = e_list_new (
! (EListCopyFunc) g_object_ref,
! (EListFreeFunc) g_object_unref, NULL);
backend->priv->queries_mutex = g_mutex_new ();
}
--- 368,375 ----
backend->priv->clients_mutex = g_mutex_new ();
backend->priv->queries = e_list_new (
! (EListCopyFunc) NULL,
! (EListFreeFunc) NULL, NULL);
backend->priv->queries_mutex = g_mutex_new ();
}
*** calendar/libedata-cal/e-data-cal-factory.c.orig Thu Apr 21 21:36:35 2011
--- calendar/libedata-cal/e-data-cal-factory.c Thu Jun 7 08:21:27 2012
***************
*** 557,562 ****
--- 557,571 ----
}
static void
+ unref_backend_cb (gpointer key, gpointer value, gpointer user_data)
+ {
+ ECalBackend *backend = value;
+
+ if (backend)
+ g_object_unref (backend);
+ }
+
+ static void
e_data_cal_factory_finalize (GObject *object)
{
EDataCalFactory *factory = E_DATA_CAL_FACTORY (object);
***************
*** 565,570 ****
--- 574,581 ----
g_object_unref (factory->priv->gdbus_object);
+ g_hash_table_foreach (factory->priv->backends, unref_backend_cb, NULL);
+
g_hash_table_destroy (factory->priv->methods);
g_hash_table_destroy (factory->priv->backends);
g_hash_table_destroy (factory->priv->calendars);
*** calendar/libedata-cal/e-data-cal-view.c.orig Thu Apr 21 21:35:36 2011
--- calendar/libedata-cal/e-data-cal-view.c Thu Jun 7 08:21:27 2012
***************
*** 328,333 ****
--- 328,343 ----
return TRUE;
}
+ static gboolean
+ impl_DataCalView_dispose (EGdbusCalView *object, GDBusMethodInvocation *invocation, EDataCalView *query)
+ {
+ e_gdbus_cal_view_complete_dispose (object, invocation);
+
+ g_object_unref (query);
+
+ return TRUE;
+ }
+
static void
e_data_cal_view_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
{
***************
*** 383,388 ****
--- 393,399 ----
priv->gdbus_object = e_gdbus_cal_view_stub_new ();
g_signal_connect (priv->gdbus_object, "handle-start", G_CALLBACK (impl_DataCalView_start), query);
g_signal_connect (priv->gdbus_object, "handle-stop", G_CALLBACK (impl_DataCalView_stop), query);
+ g_signal_connect (priv->gdbus_object, "handle-dispose", G_CALLBACK (impl_DataCalView_dispose), query);
priv->backend = NULL;
priv->started = FALSE;
***************
*** 413,418 ****
--- 424,430 ----
priv = query->priv;
if (priv->backend) {
+ e_cal_backend_remove_query (priv->backend, query);
g_object_unref (priv->backend);
priv->backend = NULL;
}
*** calendar/libedata-cal/e-data-cal-view.xml.orig Thu Apr 21 21:35:36 2011
--- calendar/libedata-cal/e-data-cal-view.xml Thu Jun 7 08:21:27 2012
***************
*** 11,16 ****
--- 11,20 ----
<method name="stop">
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_EDataCalView_stop"/>
</method>
+
+ <method name="dispose">
+ <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_EDataCalView_dispose"/>
+ </method>
<signal name="ObjectsAdded">
<arg name="objects" type="as"/>
*** calendar/libegdbus/e-gdbus-egdbuscalview.c.orig Thu Apr 21 21:35:36 2011
--- calendar/libegdbus/e-gdbus-egdbuscalview.c Thu Jun 7 08:21:27 2012
***************
*** 71,76 ****
--- 71,77 ----
__DONE_SIGNAL,
__START_METHOD,
__STOP_METHOD,
+ __DISPOSE_METHOD,
__LAST_SIGNAL
};
***************
*** 345,350 ****
--- 346,352 ----
_property_name_to_gname = g_hash_table_new (g_str_hash, g_str_equal);
g_hash_table_insert (_method_name_to_id, (gpointer) "start", GUINT_TO_POINTER (__START_METHOD));
g_hash_table_insert (_method_name_to_id, (gpointer) "stop", GUINT_TO_POINTER (__STOP_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "dispose", GUINT_TO_POINTER (__DISPOSE_METHOD));
g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsAdded", GUINT_TO_POINTER (__OBJECTS_ADDED_SIGNAL));
g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsModified", GUINT_TO_POINTER (__OBJECTS_MODIFIED_SIGNAL));
g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsRemoved", GUINT_TO_POINTER (__OBJECTS_REMOVED_SIGNAL));
***************
*** 556,561 ****
--- 558,588 ----
1,
G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCalView::handle-dispose:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>dispose</literal> D-Bus method on @object. Use e_gdbus_cal_view_complete_dispose() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_view_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__DISPOSE_METHOD] =
+ g_signal_new ("handle-dispose",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalViewIface, handle_dispose),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
/* GObject property definitions for D-Bus properties: */
}
***************
*** 762,767 ****
--- 789,894 ----
}
/**
+ * e_gdbus_cal_view_call_dispose:
+ * @proxy: A #EGdbusCalView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.CalView.dispose</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_view_call_dispose_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_view_call_dispose_sync() for the synchronous version of this method.
+ */
+ void e_gdbus_cal_view_call_dispose (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+ {
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "dispose",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+ }
+
+ /**
+ * e_gdbus_cal_view_call_dispose_finish:
+ * @proxy: A #EGdbusCalView.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_view_call_dispose().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.CalView.dispose</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+ gboolean e_gdbus_cal_view_call_dispose_finish (
+ EGdbusCalView *proxy,
+ GAsyncResult *res,
+ GError **error)
+ {
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+ _out:
+ return _ret;
+ }
+
+ /**
+ * e_gdbus_cal_view_call_dispose_sync:
+ * @proxy: A #EGdbusCalView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.CalView.dispose</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_view_call_dispose() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+ gboolean e_gdbus_cal_view_call_dispose_sync (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GError **error)
+ {
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "dispose",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+ _out:
+ return _ret;
+ }
+
+ /**
* e_gdbus_cal_view_complete_start:
* @object: A #EGdbusCalView.
* @invocation: A #GDBusMethodInvocation.
***************
*** 801,806 ****
--- 928,953 ----
g_dbus_method_invocation_return_value (invocation, NULL);
}
+ /**
+ * e_gdbus_cal_view_complete_dispose:
+ * @object: A #EGdbusCalView.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.CalView.dispose</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+ void e_gdbus_cal_view_complete_dispose (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation)
+ {
+ g_dbus_method_invocation_return_value (invocation, NULL);
+ }
+
/**
* e_gdbus_cal_view_emit_objects_added:
* @object: A #EGdbusCalView.
***************
*** 1029,1038 ****
--- 1176,1195 ----
(GDBusAnnotationInfo **) NULL,
};
+ static const GDBusMethodInfo e_gdbus_cal_view_method_dispose =
+ {
+ -1,
+ (gchar *) "dispose",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+ };
+
static const GDBusMethodInfo * const e_gdbus_cal_view_method_info_pointers[] =
{
&e_gdbus_cal_view_method_start,
&e_gdbus_cal_view_method_stop,
+ &e_gdbus_cal_view_method_dispose,
NULL
};
***************
*** 1083,1088 ****
--- 1240,1257 ----
}
break;
+ case __DISPOSE_METHOD:
+ {
+ EGdbusCalView *object = E_GDBUS_CAL_VIEW (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
default:
not_implemented:
g_dbus_method_invocation_return_error (invocation,
*** calendar/libegdbus/e-gdbus-egdbuscalview.h.orig Thu Apr 21 21:35:36 2011
--- calendar/libegdbus/e-gdbus-egdbuscalview.h Thu Jun 7 08:21:27 2012
***************
*** 35,40 ****
--- 35,41 ----
* @done: Handler for the #EGdbusCalView::done signal.
* @handle_start: Handler for the #EGdbusCalView::handle-start signal.
* @handle_stop: Handler for the #EGdbusCalView::handle-stop signal.
+ * @handle_dispose: Handler for the #EGdbusCalView::handle-dispose signal.
*
* Virtual table.
*/
***************
*** 189,194 ****
--- 190,198 ----
gboolean (*handle_stop) (
EGdbusCalView *object,
GDBusMethodInvocation *invocation);
+ gboolean (*handle_dispose) (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation);
};
/* C Bindings for properties */
***************
*** 226,231 ****
--- 230,251 ----
GCancellable *cancellable,
GError **error);
+ void e_gdbus_cal_view_call_dispose (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+ gboolean e_gdbus_cal_view_call_dispose_finish (
+ EGdbusCalView *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+ gboolean e_gdbus_cal_view_call_dispose_sync (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
/* D-Bus Methods Completion Helpers */
void e_gdbus_cal_view_complete_start (
EGdbusCalView *object,
***************
*** 235,240 ****
--- 255,264 ----
EGdbusCalView *object,
GDBusMethodInvocation *invocation);
+ void e_gdbus_cal_view_complete_dispose (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation);
+
/* D-Bus Signal Emission Helpers */
void e_gdbus_cal_view_emit_objects_added (
EGdbusCalView *object,
*** calendar/libecal/e-cal-view.c.orig Thu Apr 21 21:35:36 2011
--- calendar/libecal/e-cal-view.c Thu Jun 7 08:21:27 2012
***************
*** 193,200 ****
switch (property_id) {
case PROP_VIEW:
! if (priv->gdbus_calview != NULL)
! g_object_unref (priv->gdbus_calview);
priv->gdbus_calview = g_object_ref (g_value_get_pointer (value));
g_signal_connect (priv->gdbus_calview, "objects-added", G_CALLBACK (objects_added_cb), view);
--- 193,200 ----
switch (property_id) {
case PROP_VIEW:
! /* gdbus_calview can be set only once */
! g_return_if_fail (priv->gdbus_calview == NULL);
priv->gdbus_calview = g_object_ref (g_value_get_pointer (value));
g_signal_connect (priv->gdbus_calview, "objects-added", G_CALLBACK (objects_added_cb), view);
***************
*** 247,254 ****
view = E_CAL_VIEW (object);
priv = view->priv;
! if (priv->gdbus_calview != NULL)
g_object_unref (priv->gdbus_calview);
g_object_unref (priv->client);
--- 247,265 ----
view = E_CAL_VIEW (object);
priv = view->priv;
! if (priv->gdbus_calview != NULL) {
! GError *error = NULL;
!
! g_signal_handlers_disconnect_matched (priv->gdbus_calview, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, view);
! e_gdbus_cal_view_call_dispose_sync (priv->gdbus_calview, NULL, &error);
g_object_unref (priv->gdbus_calview);
+ priv->gdbus_calview = NULL;
+
+ if (error) {
+ g_warning ("Failed to dispose cal view: %s", error->message);
+ g_error_free (error);
+ }
+ }
g_object_unref (priv->client);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: evolution.patch
Type: text/x-diff
Size: 888 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20120607/f203da2e/evolution.bin
More information about the freebsd-ports
mailing list