static gboolean realize_cb_cb(PidginMediaRealizeData *data) { PidginMediaPrivate *priv = data->gtkmedia->priv; gulong window_id; #ifdef _WIN32 if (data->participant == NULL) window_id = GDK_WINDOW_HWND(priv->local_video->window); else window_id = GDK_WINDOW_HWND(priv->remote_video->window); #elif defined(HAVE_X11) if (data->participant == NULL) window_id = GDK_WINDOW_XWINDOW(priv->local_video->window); else window_id = GDK_WINDOW_XWINDOW(priv->remote_video->window); #else # error "Unsupported windowing system" #endif purple_media_set_output_window(priv->media, data->session_id, data->participant, window_id); g_free(data->session_id); g_free(data->participant); g_free(data); return FALSE; }
void Media::minbif_media_state_changed_cb(PurpleMedia *media, PurpleMediaState state, gchar *sid, gchar *name, void* gtkmedia) { if (sid == NULL && name == NULL) { if (state == PURPLE_MEDIA_STATE_END) { media_list.removeMedia(Media(media)); b_log[W_INFO] << "The call has been terminated."; } } else if (state == PURPLE_MEDIA_STATE_NEW && sid != NULL && name != NULL) { if (purple_media_is_initiator(media, sid, NULL) == FALSE) { g_timeout_add(500, (GSourceFunc)Media::minbif_media_ready_cb, gtkmedia); purple_media_set_output_window(media, sid, name, 0); } } }