Fixed #1265: video events for PJSUA-LIB
git-svn-id: https://svn.pjsip.org/repos/pjproject/branches/projects/2.0-dev@3656 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index ba43682..d0c5ac5 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -1426,8 +1426,10 @@
PJ_UNUSED_ARG(security_level);
#endif
- pjmedia_event_subscription_init(&call_med->esub, &call_media_on_event,
+ pjmedia_event_subscription_init(&call_med->esub_rend, &call_media_on_event,
call_med);
+ pjmedia_event_subscription_init(&call_med->esub_cap, &call_media_on_event,
+ call_med);
return PJ_SUCCESS;
diff --git a/pjsip/src/pjsua-lib/pjsua_vid.c b/pjsip/src/pjsua-lib/pjsua_vid.c
index 60d675f..99fd98e 100644
--- a/pjsip/src/pjsua-lib/pjsua_vid.c
+++ b/pjsip/src/pjsua-lib/pjsua_vid.c
@@ -631,12 +631,12 @@
if (status != PJ_SUCCESS)
return status;
+ w = &pjsua_var.win[wid];
+
/* Register to video events */
pjmedia_event_subscribe(
pjmedia_vid_port_get_event_publisher(w->vp_rend),
- &call_med->esub);
-
- w = &pjsua_var.win[wid];
+ &call_med->esub_rend);
/* Connect renderer to stream */
status = pjmedia_vid_port_connect(w->vp_rend, media_port,
@@ -679,6 +679,10 @@
return status;
w = &pjsua_var.win[wid];
+
+ pjmedia_event_subscribe(
+ pjmedia_vid_port_get_event_publisher(w->vp_cap),
+ &call_med->esub_cap);
/* Connect stream to capturer (via video window tee) */
status = pjmedia_vid_tee_add_dst_port2(w->tee, 0, media_port);
@@ -768,6 +772,10 @@
if (!strm)
return;
+ /* Unsubscribe events */
+ pjmedia_event_unsubscribe(&call_med->esub_rend);
+ pjmedia_event_unsubscribe(&call_med->esub_cap);
+
if (call_med->strm.v.cap_win_id != PJSUA_INVALID_ID) {
pjmedia_port *media_port;
pjsua_vid_win *w =
@@ -1354,6 +1362,8 @@
PJMEDIA_DIR_ENCODING, &media_port);
if (status != PJ_SUCCESS)
return status;
+
+ pjmedia_event_unsubscribe(&call_med->esub_cap);
/* = Detach stream port from the old capture device = */
status = pjmedia_vid_port_disconnect(w->vp_cap);
@@ -1392,6 +1402,10 @@
if (status != PJ_SUCCESS)
return status;
+ pjmedia_event_subscribe(
+ pjmedia_vid_port_get_event_publisher(w->vp_rend),
+ &call_med->esub_cap);
+
/* Start renderer */
status = pjmedia_vid_port_start(new_w->vp_rend);
if (status != PJ_SUCCESS)