$ git clone https://tcclient.ion.nu/tc_client.git
commit ad55fc00b17696612fc2de92c349cfc43799fd85
Author: Alicia <...>
Date:   Mon Dec 5 14:15:36 2016 +0100

    tc_client-gtk: bugfix: hiding your own camera caused a segfault.

diff --git a/ChangeLog b/ChangeLog
index b024e62..c3e9388 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,7 @@ tc_client-gtk: added support for integrated youtube videos.
 tc_client-gtk: compatibility with older versions of libavformat.
 tc_client-gtk: build fixes for windows.
 tc_client-gtk: tweaks for windows compatibility.
+tc_client-gtk: bugfix: hiding your own camera caused a segfault.
 dist/appimage.sh: fix audio in appimages by building ffmpeg with support for nellymoser and speex, and depending on the system's libao and libpulse instead of including it in the appimage.
 libcamera(escapi): handle failure to open camera more gracefully.
 irchack: pass along "<user> cammed up" notifications.
diff --git a/utilities/gtk/gui.c b/utilities/gtk/gui.c
index 2417a9f..0f07fef 100644
--- a/utilities/gtk/gui.c
+++ b/utilities/gtk/gui.c
@@ -593,7 +593,12 @@ void gui_hide_cam(GtkMenuItem* menuitem, void* x)
   struct camera* cam=camera_find(menu_context_cam);
   if(!cam){return;}
   dprintf(tc_client_in[1], "/closecam %s\n", cam->nick);
-  camera_remove(menu_context_cam, 0);
+  if(!strcmp(cam->id, "out"))
+  {
+    stopbroadcasting(0, 0);
+  }else{
+    camera_remove(menu_context_cam, 0);
+  }
 }
 
 gboolean gui_greenscreen_preview(void* x)
diff --git a/utilities/gtk/media.c b/utilities/gtk/media.c
index 0378838..5f8bd12 100644
--- a/utilities/gtk/media.c
+++ b/utilities/gtk/media.c
@@ -271,6 +271,7 @@ gboolean cam_encode(void* camera_)
   CAM* camera=camera_;
   if(camera!=camout_cam){return G_SOURCE_REMOVE;}
   struct camera* cam=camera_find("out");
+  if(!cam){return G_SOURCE_REMOVE;}
   if(cam->placeholder) // Remove the placeholder animation if it has it
   {
     g_source_remove(cam->placeholder);