[gtk+/broadway: 56/71] Handle output errors correctly
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/broadway: 56/71] Handle output errors correctly
- Date: Thu, 25 Nov 2010 21:19:58 +0000 (UTC)
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]