[gtk+/broadway: 56/71] Handle output errors correctly



commit 0539303dfcb42647344b35c2444b85324cd1d843
Author: Alexander Larsson <alexl redhat com>
Date:   Wed Nov 24 22:12:50 2010 +0100

    Handle output errors correctly

 gdk/broadway/gdkdisplay-broadway.c |    6 ++----
 gdk/broadway/gdkdisplay-broadway.h |    1 -
 gdk/broadway/gdkwindow-broadway.c  |    6 +++++-
 3 files changed, 7 insertions(+), 6 deletions(-)
---
diff --git a/gdk/broadway/gdkdisplay-broadway.c b/gdk/broadway/gdkdisplay-broadway.c
index 4435bb9..cb07877 100644
--- a/gdk/broadway/gdkdisplay-broadway.c
+++ b/gdk/broadway/gdkdisplay-broadway.c
@@ -455,11 +455,9 @@ start_output (HttpRequest *request)
   display_broadway = GDK_DISPLAY_BROADWAY (request->display);
   fd = g_socket_get_fd (socket);
   set_fd_blocking (fd);
-  display_broadway->output = broadway_output_new (fd);
+  /* We dup this because otherwise it'll be closed with the request SocketConnection */
+  display_broadway->output = broadway_output_new (dup(fd));
   _gdk_broadway_resync_windows ();
-
-  /* Keep connection alive */
-  display_broadway->output_connection = g_object_ref (request->connection);
   http_request_free (request);
 }
 
diff --git a/gdk/broadway/gdkdisplay-broadway.h b/gdk/broadway/gdkdisplay-broadway.h
index 6870f86..8b5c83f 100644
--- a/gdk/broadway/gdkdisplay-broadway.h
+++ b/gdk/broadway/gdkdisplay-broadway.h
@@ -81,7 +81,6 @@ struct _GdkDisplayBroadway
 
   GSocketService *service;
   BroadwayOutput *output;
-  GSocketConnection *output_connection;
 };
 
 struct _GdkDisplayBroadwayClass
diff --git a/gdk/broadway/gdkwindow-broadway.c b/gdk/broadway/gdkwindow-broadway.c
index 279de4c..5a4487b 100644
--- a/gdk/broadway/gdkwindow-broadway.c
+++ b/gdk/broadway/gdkwindow-broadway.c
@@ -180,7 +180,11 @@ dirty_flush_idle (gpointer data)
 	}
     }
 
-  broadway_output_flush (output);
+  if (!broadway_output_flush (display->output))
+    {
+      broadway_output_free (display->output);
+      display->output = NULL;
+    }
 
   return FALSE;
 }



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