[ekiga] Preview: Various fixes with video window hiding/showing.



commit 4cda5ae2b63119c9d9fba90567272b367e3fa7ce
Author: Damien Sandras <dsandras beip be>
Date:   Sun Mar 11 14:20:05 2012 +0100

    Preview: Various fixes with video window hiding/showing.

 src/gui/call_window.cpp |   19 +++++++------------
 src/gui/main_window.cpp |   12 ++++++++----
 2 files changed, 15 insertions(+), 16 deletions(-)
---
diff --git a/src/gui/call_window.cpp b/src/gui/call_window.cpp
index 91922ca..dec5deb 100644
--- a/src/gui/call_window.cpp
+++ b/src/gui/call_window.cpp
@@ -718,8 +718,6 @@ on_videooutput_device_opened_cb (Ekiga::VideoOutputManager & /* manager */,
   EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
   int vv;
 
-  gtk_widget_show (GTK_WIDGET (cw));
-
   if (both_streams) {
     gtk_menu_section_set_sensitive (cw->priv->main_menu, "local_video", true);
     gtk_menu_section_set_sensitive (cw->priv->main_menu, "fullscreen", true);
@@ -863,7 +861,6 @@ on_videoinput_device_closed_cb (Ekiga::VideoInputManager & /* manager */,
 {
   EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
 
-
   ekiga_call_window_channels_menu_update_sensitivity (cw, true, false, false);
   ekiga_call_window_update_logo (cw);
 
@@ -1129,7 +1126,6 @@ on_cleared_call_cb (G_GNUC_UNUSED boost::shared_ptr<Ekiga::CallManager> manager,
   ekiga_call_window_set_status (cw, _("Standby"));
   ekiga_call_window_set_bandwidth (cw, 0.0, 0.0, 0.0, 0.0, 0, 0);
   ekiga_call_window_clear_stats (cw);
-  ekiga_call_window_update_logo (cw);
 
   if (cw->priv->current_call) {
     cw->priv->current_call = boost::shared_ptr<Ekiga::Call>();
@@ -1320,12 +1316,14 @@ ekiga_call_window_delete_event_cb (GtkWidget *widget,
   g_return_val_if_fail (EKIGA_IS_CALL_WINDOW (cw), false);
 
   /* Hangup or disable preview */
-  if (cw->priv->current_call)
+  if (cw->priv->calling_state != Standby && cw->priv->current_call) {
     cw->priv->current_call->hangup ();
-  else
+  }
+  else {
     gm_conf_set_bool (VIDEO_DEVICES_KEY "enable_preview", false);
+  }
 
-  return true;
+  return true; // Do not relay the event anymore
 }
 
 static void
@@ -1338,9 +1336,6 @@ ekiga_call_window_update_calling_state (EkigaCallWindow *cw,
     {
     case Standby:
 
-      /* Show/hide call frame */
-      gtk_widget_hide (cw->priv->call_frame);
-
       /* Update the hold state */
       ekiga_call_window_set_call_hold (cw, false);
 
@@ -1999,7 +1994,7 @@ ekiga_call_window_update_logo (EkigaCallWindow *cw)
                 "pixel-size", 128,
                 NULL);
 
-  ekiga_call_window_set_video_size (cw, GM_QCIF_WIDTH, GM_QCIF_HEIGHT);
+  ekiga_call_window_set_video_size (cw, GM_CIF_WIDTH, GM_CIF_HEIGHT);
 }
 
 static void
@@ -2432,7 +2427,7 @@ ekiga_call_window_init (EkigaCallWindow *cw)
   cw->priv->video_widget_gc = NULL;
 #endif
 
-  g_signal_connect (cw, "delete-event",
+  g_signal_connect (cw, "delete_event",
 		    G_CALLBACK (ekiga_call_window_delete_event_cb), NULL);
 }
 
diff --git a/src/gui/main_window.cpp b/src/gui/main_window.cpp
index 6b2d883..34d1ac6 100644
--- a/src/gui/main_window.cpp
+++ b/src/gui/main_window.cpp
@@ -753,8 +753,10 @@ static void on_cleared_call_cb (boost::shared_ptr<Ekiga::CallManager>  /*manager
   audiooutput_core->stop_play_event("ring_tone_sound");
 
   /* Hide call window */
-  call_window = GnomeMeeting::Process ()->GetCallWindow ();
-  g_timeout_add_seconds (2, on_delayed_hide_call_window_cb, call_window);
+  if (!gm_conf_get_bool (VIDEO_DEVICES_KEY "enable_preview")) {
+    call_window = GnomeMeeting::Process ()->GetCallWindow ();
+    g_timeout_add_seconds (2, on_delayed_hide_call_window_cb, call_window);
+  }
 
   /* Sensitive a few things back */
   gtk_widget_set_sensitive (GTK_WIDGET (mw->priv->uri_toolbar), true);
@@ -786,8 +788,10 @@ static void on_cleared_incoming_call_cb (std::string /*reason*/,
 #endif
 
   /* Hide call window */
-  call_window = GnomeMeeting::Process ()->GetCallWindow ();
-  g_timeout_add_seconds (2, on_delayed_hide_call_window_cb, call_window);
+  if (!gm_conf_get_bool (VIDEO_DEVICES_KEY "enable_preview")) {
+    call_window = GnomeMeeting::Process ()->GetCallWindow ();
+    g_timeout_add_seconds (2, on_delayed_hide_call_window_cb, call_window);
+  }
 
   /* Sensitive a few things back */
   gtk_widget_set_sensitive (GTK_WIDGET (mw->priv->uri_toolbar), true);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]