static void empathy_video_widget_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { EmpathyVideoWidgetPriv *priv = GET_PRIV (object); switch (property_id) { case PROP_GST_BUS: priv->bus = g_value_dup_object (value); break; case PROP_MIN_WIDTH: priv->min_width = g_value_get_int (value); break; case PROP_MIN_HEIGHT: priv->min_height = g_value_get_int (value); break; case PROP_SYNC: priv->sync = g_value_get_boolean (value); empathy_video_widget_element_set_sink_properties ( EMPATHY_VIDEO_WIDGET (object)); break; case PROP_ASYNC: priv->async = g_value_get_boolean (value); empathy_video_widget_element_set_sink_properties ( EMPATHY_VIDEO_WIDGET (object)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
void empathy_video_widget_dispose (GObject *object) { EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (object); EmpathyVideoWidgetPriv *priv = GET_PRIV (self); if (priv->dispose_has_run) return; priv->dispose_has_run = TRUE; g_signal_handlers_disconnect_by_func (priv->bus, empathy_video_widget_sync_message_cb, object); if (priv->bus != NULL) g_object_unref (priv->bus); priv->bus = NULL; if (priv->videosink != NULL) g_object_unref (priv->videosink); priv->videosink = NULL; /* release any references held by the object here */ if (G_OBJECT_CLASS (empathy_video_widget_parent_class)->dispose) G_OBJECT_CLASS (empathy_video_widget_parent_class)->dispose (object); }
static void empathy_video_widget_dispose (GObject *object) { EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (object); EmpathyVideoWidgetPriv *priv = GET_PRIV (self); if (priv->dispose_has_run) return; priv->dispose_has_run = TRUE; if (priv->notify_allocation_id != 0) { ClutterActor *stage; stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (object)); g_signal_handler_disconnect (stage, priv->notify_allocation_id); priv->notify_allocation_id = 0; } if (priv->videosink != NULL) g_object_unref (priv->videosink); priv->videosink = NULL; if (priv->sink != NULL) g_object_unref (priv->sink); priv->sink = NULL; /* release any references held by the object here */ if (G_OBJECT_CLASS (empathy_video_widget_parent_class)->dispose) G_OBJECT_CLASS (empathy_video_widget_parent_class)->dispose (object); }
static gboolean empathy_video_widget_draw (GtkWidget *widget, cairo_t *cr) { EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (widget); EmpathyVideoWidgetPriv *priv = GET_PRIV (self); GtkAllocation allocation; if (priv->overlay == NULL) { gtk_widget_get_allocation (widget, &allocation); gtk_render_frame (gtk_widget_get_style_context (widget), cr, 0, 0, gtk_widget_get_allocated_width (widget), gtk_widget_get_allocated_height (widget)); return TRUE; } gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (priv->overlay), GDK_WINDOW_XID (gtk_widget_get_window (widget))); gst_x_overlay_expose (GST_X_OVERLAY (priv->overlay)); return TRUE; }
void empathy_video_widget_finalize (GObject *object) { EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (object); EmpathyVideoWidgetPriv *priv = GET_PRIV (self); /* free any data held directly by the object here */ g_mutex_free (priv->lock); G_OBJECT_CLASS (empathy_video_widget_parent_class)->finalize (object); }
static gboolean empathy_video_widget_expose_event (GtkWidget *widget, GdkEventExpose *event) { EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (widget); EmpathyVideoWidgetPriv *priv = GET_PRIV (self); if (event != NULL && event->count > 0) return TRUE; if (priv->overlay == NULL) return TRUE; gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (priv->overlay), GDK_WINDOW_XID (widget->window)); gst_x_overlay_expose (GST_X_OVERLAY (priv->overlay)); return TRUE; }
static gboolean empathy_video_widget_expose_event (GtkWidget *widget, GdkEventExpose *event) { EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (widget); EmpathyVideoWidgetPriv *priv = GET_PRIV (self); if (event != NULL && event->count > 0) return TRUE; if (priv->overlay == NULL) { gdk_window_clear_area (gtk_widget_get_window (widget), 0, 0, widget->allocation.width, widget->allocation.height); return TRUE; } gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (priv->overlay), GDK_WINDOW_XID (gtk_widget_get_window (widget))); gst_x_overlay_expose (GST_X_OVERLAY (priv->overlay)); return TRUE; }