From 389d71af383dacd5e67d460811926b34d7fcf22f Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Tue, 26 Feb 2008 13:31:14 +0000 Subject: [PATCH] Make use of generated code for using stream engine. svn path=/trunk/; revision=664 --- libempathy-gtk/empathy-call-window.c | 12 +- libempathy/Makefile.am | 7 +- libempathy/empathy-tp-call.c | 165 ++++++++++++--------------- libempathy/empathy-tp-call.h | 6 +- libempathy/tp-stream-engine.xml | 54 --------- python/pyempathy/pyempathy.defs | 6 +- src/Makefile.am | 1 + src/empathy-call-chandler.c | 2 + 8 files changed, 88 insertions(+), 165 deletions(-) delete mode 100644 libempathy/tp-stream-engine.xml diff --git a/libempathy-gtk/empathy-call-window.c b/libempathy-gtk/empathy-call-window.c index 5cd62d1c..7b3ebc2b 100644 --- a/libempathy-gtk/empathy-call-window.c +++ b/libempathy-gtk/empathy-call-window.c @@ -196,8 +196,8 @@ call_window_delete_event_cb (GtkWidget *widget, call_window_stop_timeout (window); call_window_set_output_video_is_drawing (window, FALSE); empathy_tp_call_close_channel (window->call); - empathy_tp_call_remove_preview_video (gtk_socket_get_id (GTK_SOCKET - (window->preview_video_socket))); + empathy_tp_call_remove_preview_video (window->call, + gtk_socket_get_id (GTK_SOCKET (window->preview_video_socket))); return FALSE; default: return TRUE; @@ -205,8 +205,8 @@ call_window_delete_event_cb (GtkWidget *widget, } else { - empathy_tp_call_remove_preview_video (gtk_socket_get_id (GTK_SOCKET - (window->preview_video_socket))); + empathy_tp_call_remove_preview_video (window->call, + gtk_socket_get_id (GTK_SOCKET (window->preview_video_socket))); return FALSE; } } @@ -344,8 +344,8 @@ call_window_socket_realized_cb (GtkWidget *widget, if (widget == window->preview_video_socket) { empathy_debug (DEBUG_DOMAIN, "Preview socket realized"); - empathy_tp_call_add_preview_video (gtk_socket_get_id (GTK_SOCKET - (window->preview_video_socket))); + empathy_tp_call_add_preview_video (window->call, + gtk_socket_get_id (GTK_SOCKET (window->preview_video_socket))); } else { diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am index adf9b7d5..f88a8cbc 100644 --- a/libempathy/Makefile.am +++ b/libempathy/Makefile.am @@ -13,8 +13,7 @@ BUILT_SOURCES = \ empathy-enum-types.h \ empathy-enum-types.c \ empathy-filter-glue.h \ - empathy-chandler-glue.h \ - tp-stream-engine-gen.h + empathy-chandler-glue.h lib_LTLIBRARIES = libempathy.la @@ -116,9 +115,6 @@ empathy-chandler-glue.h: empathy-chandler.xml Makefile empathy-filter-glue.h: empathy-filter.xml Makefile $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=empathy_filter --mode=glib-server --output=$@ $< -tp-stream-engine-gen.h: tp-stream-engine.xml Makefile.am - $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=tp_stream_engine --mode=glib-client --output=$@ $< - empathy-enum-types.h: stamp-empathy-enum-types.h @true @@ -180,7 +176,6 @@ EXTRA_DIST = \ empathy-marshal.list \ empathy-chandler.xml \ empathy-filter.xml \ - tp-stream-engine.xml \ $(stylesheet_DATA) \ $(dtd_DATA) \ $(ircnetworks_DATA) diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c index 7deb31c2..6dd24a51 100644 --- a/libempathy/empathy-tp-call.c +++ b/libempathy/empathy-tp-call.c @@ -24,16 +24,16 @@ #include #include #include +#include #include +#include #include #include #include #include -#include "tp-stream-engine-gen.h" - #include "empathy-tp-call.h" #define DEBUG_DOMAIN "TpCall" @@ -43,8 +43,6 @@ #define STREAM_ENGINE_BUS_NAME "org.freedesktop.Telepathy.StreamEngine" #define STREAM_ENGINE_OBJECT_PATH "/org/freedesktop/Telepathy/StreamEngine" -#define STREAM_ENGINE_INTERFACE "org.freedesktop.Telepathy.StreamEngine" -#define CHANNEL_HANDLER_INTERFACE "org.freedesktop.Telepathy.ChannelHandler" typedef struct _EmpathyTpCallPriv EmpathyTpCallPriv; @@ -52,6 +50,7 @@ struct _EmpathyTpCallPriv { TpConn *connection; TpChan *channel; + TpProxy *stream_engine; EmpathyTpGroup *group; EmpathyContact *contact; gboolean is_incoming; @@ -478,29 +477,44 @@ tp_call_remote_pending_cb (EmpathyTpGroup *group, tp_call_is_ready (call); } +static void +tp_call_async_cb (TpProxy *proxy, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + if (error) + { + empathy_debug (DEBUG_DOMAIN, "Error %s: %s", + user_data, error->message); + } +} + static void tp_call_start_stream_engine (EmpathyTpCall *call) { EmpathyTpCallPriv *priv = GET_PRIV (call); - DBusGProxy *ch_proxy; - GError *error = NULL; empathy_debug (DEBUG_DOMAIN, "Revving up the stream engine"); - ch_proxy = dbus_g_proxy_new_for_name (tp_get_bus (), STREAM_ENGINE_BUS_NAME, - STREAM_ENGINE_OBJECT_PATH, CHANNEL_HANDLER_INTERFACE); + priv->stream_engine = g_object_new (TP_TYPE_PROXY, + "bus-name", STREAM_ENGINE_BUS_NAME, + "dbus-connection", tp_get_bus (), + "object-path", STREAM_ENGINE_OBJECT_PATH); + tp_proxy_add_interface_by_id (priv->stream_engine, + EMP_IFACE_QUARK_STREAM_ENGINE); + tp_proxy_add_interface_by_id (priv->stream_engine, + EMP_IFACE_QUARK_CHANNEL_HANDLER); - if (!org_freedesktop_Telepathy_ChannelHandler_handle_channel (ch_proxy, + emp_cli_channel_handler_call_handle_channel (priv->stream_engine, -1, dbus_g_proxy_get_bus_name (DBUS_G_PROXY (priv->connection)), dbus_g_proxy_get_path (DBUS_G_PROXY (priv->connection)), priv->channel->type, dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)), - priv->channel->handle_type, priv->channel->handle, &error)) - { - empathy_debug (DEBUG_DOMAIN, "Couldn't start stream engine: %s", - error->message); - g_clear_error (&error); - } + priv->channel->handle_type, priv->channel->handle, + tp_call_async_cb, + "calling handle channel", NULL, + G_OBJECT (call)); } static GObject * @@ -541,6 +555,7 @@ tp_call_constructor (GType type, account = mission_control_get_account_for_connection (mc, priv->connection, NULL); priv->group = empathy_tp_group_new (account, priv->channel); + g_object_unref (mc); g_signal_connect (G_OBJECT (priv->group), "member-added", G_CALLBACK (tp_call_member_added_cb), (gpointer) call); @@ -810,43 +825,33 @@ empathy_tp_call_close_channel (EmpathyTpCall *call) } void -empathy_tp_call_add_preview_video (guint preview_video_socket_id) +empathy_tp_call_add_preview_video (EmpathyTpCall *call, + guint preview_video_socket_id) { - GError *error = NULL; - DBusGProxy *ch_proxy; + EmpathyTpCallPriv *priv = GET_PRIV (call); empathy_debug (DEBUG_DOMAIN, "Adding preview video"); - ch_proxy = dbus_g_proxy_new_for_name (tp_get_bus (), STREAM_ENGINE_BUS_NAME, - STREAM_ENGINE_OBJECT_PATH, STREAM_ENGINE_INTERFACE); - - if (!org_freedesktop_Telepathy_StreamEngine_add_preview_window (ch_proxy, - preview_video_socket_id, &error)) - { - empathy_debug (DEBUG_DOMAIN, "Couldn't set video preview: %s", - error->message); - g_clear_error (&error); - } + emp_cli_stream_engine_call_add_preview_window (priv->stream_engine, -1, + preview_video_socket_id, + tp_call_async_cb, + "adding preview window", NULL, + G_OBJECT (call)); } void -empathy_tp_call_remove_preview_video (guint preview_video_socket_id) +empathy_tp_call_remove_preview_video (EmpathyTpCall *call, + guint preview_video_socket_id) { - GError *error = NULL; - DBusGProxy *ch_proxy; + EmpathyTpCallPriv *priv = GET_PRIV (call); empathy_debug (DEBUG_DOMAIN, "Removing preview video"); - ch_proxy = dbus_g_proxy_new_for_name (tp_get_bus (), STREAM_ENGINE_BUS_NAME, - STREAM_ENGINE_OBJECT_PATH, STREAM_ENGINE_INTERFACE); - - if (!org_freedesktop_Telepathy_StreamEngine_remove_preview_window (ch_proxy, - preview_video_socket_id, &error)) - { - empathy_debug (DEBUG_DOMAIN, "Couldn't set video preview: %s", - error->message); - g_clear_error (&error); - } + emp_cli_stream_engine_call_remove_preview_window (priv->stream_engine, -1, + preview_video_socket_id, + tp_call_async_cb, + "removing preview window", NULL, + G_OBJECT (call)); } void @@ -854,24 +859,16 @@ empathy_tp_call_add_output_video (EmpathyTpCall *call, guint output_video_socket_id) { EmpathyTpCallPriv *priv = GET_PRIV (call); - const gchar *object_path; - DBusGProxy *ch_proxy; - GError *error = NULL; empathy_debug (DEBUG_DOMAIN, "Adding output video - socket: %d", output_video_socket_id); - object_path = dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)); - ch_proxy = dbus_g_proxy_new_for_name (tp_get_bus (), STREAM_ENGINE_BUS_NAME, - STREAM_ENGINE_OBJECT_PATH, STREAM_ENGINE_INTERFACE); - - if (!org_freedesktop_Telepathy_StreamEngine_set_output_window (ch_proxy, - object_path, priv->video->id, output_video_socket_id, &error)) - { - empathy_debug (DEBUG_DOMAIN, "Couldn't set video output: %s", - error->message); - g_clear_error (&error); - } + emp_cli_stream_engine_call_set_output_window (priv->stream_engine, -1, + dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)), + priv->video->id, output_video_socket_id, + tp_call_async_cb, + "setting output window", NULL, + G_OBJECT (call)); } void @@ -879,52 +876,37 @@ empathy_tp_call_set_output_volume (EmpathyTpCall *call, guint volume) { EmpathyTpCallPriv *priv = GET_PRIV (call); - const gchar *object_path; - DBusGProxy *ch_proxy; - GError *error = NULL; if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED) return; empathy_debug (DEBUG_DOMAIN, "Setting output volume: %d", volume); - object_path = dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)); - ch_proxy = dbus_g_proxy_new_for_name (tp_get_bus (), STREAM_ENGINE_BUS_NAME, - STREAM_ENGINE_OBJECT_PATH, STREAM_ENGINE_INTERFACE); - - if (!org_freedesktop_Telepathy_StreamEngine_set_output_volume (ch_proxy, - object_path, priv->audio->id, volume, &error)) - { - empathy_debug (DEBUG_DOMAIN, "Couldn't set volume: %s", error->message); - g_clear_error (&error); - } + emp_cli_stream_engine_call_set_output_volume (priv->stream_engine, -1, + dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)), + priv->audio->id, volume, + tp_call_async_cb, + "setting output volume", NULL, + G_OBJECT (call)); } - void empathy_tp_call_mute_output (EmpathyTpCall *call, gboolean is_muted) { EmpathyTpCallPriv *priv = GET_PRIV (call); - const gchar *object_path; - DBusGProxy *ch_proxy; - GError *error = NULL; if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED) return; empathy_debug (DEBUG_DOMAIN, "Setting output mute: %d", is_muted); - object_path = dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)); - ch_proxy = dbus_g_proxy_new_for_name (tp_get_bus (), STREAM_ENGINE_BUS_NAME, - STREAM_ENGINE_OBJECT_PATH, STREAM_ENGINE_INTERFACE); - - if (!org_freedesktop_Telepathy_StreamEngine_mute_output (ch_proxy, - object_path, priv->audio->id, is_muted, &error)) - { - empathy_debug (DEBUG_DOMAIN, "Couldn't mute output: %s", error->message); - g_clear_error (&error); - } + emp_cli_stream_engine_call_mute_output (priv->stream_engine, -1, + dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)), + priv->audio->id, is_muted, + tp_call_async_cb, + "muting output", NULL, + G_OBJECT (call)); } void @@ -932,24 +914,17 @@ empathy_tp_call_mute_input (EmpathyTpCall *call, gboolean is_muted) { EmpathyTpCallPriv *priv = GET_PRIV (call); - const gchar *object_path; - DBusGProxy *ch_proxy; - GError *error = NULL; if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED) return; empathy_debug (DEBUG_DOMAIN, "Setting input mute: %d", is_muted); - object_path = dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)); - ch_proxy = dbus_g_proxy_new_for_name (tp_get_bus (), STREAM_ENGINE_BUS_NAME, - STREAM_ENGINE_OBJECT_PATH, STREAM_ENGINE_INTERFACE); - - if (!org_freedesktop_Telepathy_StreamEngine_mute_input (ch_proxy, - object_path, priv->audio->id, is_muted, &error)) - { - empathy_debug (DEBUG_DOMAIN, "Couldn't mute input: %s", error->message); - g_clear_error (&error); - } + emp_cli_stream_engine_call_mute_input (priv->stream_engine, -1, + dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)), + priv->audio->id, is_muted, + tp_call_async_cb, + "muting input", NULL, + G_OBJECT (call)); } diff --git a/libempathy/empathy-tp-call.h b/libempathy/empathy-tp-call.h index 69f87342..b0c32082 100644 --- a/libempathy/empathy-tp-call.h +++ b/libempathy/empathy-tp-call.h @@ -78,8 +78,10 @@ void empathy_tp_call_accept_incoming_call (EmpathyTpCall *call); void empathy_tp_call_close_channel (EmpathyTpCall *call); void empathy_tp_call_request_video_stream_direction (EmpathyTpCall *call, gboolean is_sending); -void empathy_tp_call_add_preview_video (guint preview_video_socket_id); -void empathy_tp_call_remove_preview_video (guint preview_video_socket_id); +void empathy_tp_call_add_preview_video (EmpathyTpCall *call, + guint preview_video_socket_id); +void empathy_tp_call_remove_preview_video (EmpathyTpCall *call, + guint preview_video_socket_id); void empathy_tp_call_add_output_video (EmpathyTpCall *call, guint output_video_socket_id); void empathy_tp_call_set_output_volume (EmpathyTpCall *call, guint volume); diff --git a/libempathy/tp-stream-engine.xml b/libempathy/tp-stream-engine.xml deleted file mode 100644 index 5a8783d0..00000000 --- a/libempathy/tp-stream-engine.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/pyempathy/pyempathy.defs b/python/pyempathy/pyempathy.defs index 8d8f7c7e..8196a5a3 100644 --- a/python/pyempathy/pyempathy.defs +++ b/python/pyempathy/pyempathy.defs @@ -1360,7 +1360,8 @@ ) ) -(define-function empathy_tp_call_add_preview_video +(define-method add_preview_video + (of-object "EmpathyTpCall") (c-name "empathy_tp_call_add_preview_video") (return-type "none") (parameters @@ -1368,7 +1369,8 @@ ) ) -(define-function empathy_tp_call_remove_preview_video +(define-method remove_preview_video + (of-object "EmpathyTpCall") (c-name "empathy_tp_call_remove_preview_video") (return-type "none") (parameters diff --git a/src/Makefile.am b/src/Makefile.am index 59d6c5c1..d23eea90 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -12,6 +12,7 @@ AM_CPPFLAGS = \ LDADD = \ $(top_builddir)/libempathy-gtk/libempathy-gtk.la \ $(top_builddir)/libempathy/libempathy.la \ + $(top_builddir)/extensions/libemp-extensions.la \ $(EMPATHY_LIBS) bin_PROGRAMS = \ diff --git a/src/empathy-call-chandler.c b/src/empathy-call-chandler.c index e1568c18..2b359ec2 100644 --- a/src/empathy-call-chandler.c +++ b/src/empathy-call-chandler.c @@ -22,6 +22,7 @@ #include +#include #include #include #include @@ -68,6 +69,7 @@ main (int argc, char *argv[]) EmpathyChandler *chandler; gtk_init (&argc, &argv); + emp_cli_init (); mc = empathy_mission_control_new (); -- 2.39.2