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)