aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Robert Manea <gotmor@gmail.com>2009-10-14 10:01:34 +0200
committerGravatar Robert Manea <gotmor@gmail.com>2009-10-14 10:01:34 +0200
commit8fa27940fbc6e0bdde34567dc882d2c6aad6c3b8 (patch)
treef309cbbbcb421568051e9c884dfff484ae65f895
parent5b1f6a5deed654e651e1de249a81b895d0073313 (diff)
added view_source, added remove_socket_from_array()
-rw-r--r--callbacks.c2
-rw-r--r--callbacks.h2
-rw-r--r--events.c5
-rw-r--r--uzbl-core.c20
4 files changed, 23 insertions, 6 deletions
diff --git a/callbacks.c b/callbacks.c
index d65d09a..15b0a7e 100644
--- a/callbacks.c
+++ b/callbacks.c
@@ -289,13 +289,11 @@ cmd_useragent() {
}
/* requires webkit >=1.1.14 */
-/*
void
cmd_view_source() {
webkit_web_view_set_view_source_mode(uzbl.gui.web_view,
(gboolean) uzbl.behave.view_source);
}
-*/
void
toggle_zoom_type (WebKitWebView* page, GArray *argv, GString *result) {
diff --git a/callbacks.h b/callbacks.h
index 16ff48a..8c43cf7 100644
--- a/callbacks.h
+++ b/callbacks.h
@@ -112,10 +112,8 @@ cmd_caret_browsing();
void
cmd_set_geometry();
-/*
void
cmd_view_source();
-*/
void
cmd_load_start();
diff --git a/events.c b/events.c
index 6cb41f9..48f3bc0 100644
--- a/events.c
+++ b/events.c
@@ -57,15 +57,17 @@ send_event_socket(GString *msg) {
gsize len;
guint i=0, j=0;
+ /* write to all --connect-socket sockets */
if(uzbl.comm.connect_chan) {
while(i < uzbl.comm.connect_chan->len) {
gio = g_ptr_array_index(uzbl.comm.connect_chan, i++);
- j=0;
+ j=0; ret = 0;
if(gio && gio->is_writeable) {
if(uzbl.state.event_buffer) {
event_buffer_timeout(0);
+ /* replay buffered events */
while(j < uzbl.state.event_buffer->len) {
tmp = g_ptr_array_index(uzbl.state.event_buffer, j++);
ret = g_io_channel_write_chars (gio,
@@ -108,6 +110,7 @@ send_event_socket(GString *msg) {
g_ptr_array_add(uzbl.state.event_buffer, (gpointer)g_string_new(msg->str));
}
+ /* write to all client sockets */
i=0;
if(msg && uzbl.comm.client_chan) {
while(i < uzbl.comm.client_chan->len) {
diff --git a/uzbl-core.c b/uzbl-core.c
index e6f8edf..9e6833a 100644
--- a/uzbl-core.c
+++ b/uzbl-core.c
@@ -127,7 +127,7 @@ const struct var_name_to_ptr_t {
{ "max_conns_host", PTR_V_INT(uzbl.net.max_conns_host, 1, cmd_max_conns_host)},
{ "useragent", PTR_V_STR(uzbl.net.useragent, 1, cmd_useragent)},
/* requires webkit >=1.1.14 */
- //{ "view_source", PTR_V_INT(uzbl.behave.view_source, 0, cmd_view_source)},
+ { "view_source", PTR_V_INT(uzbl.behave.view_source, 0, cmd_view_source)},
/* exported WebKitWebSettings properties */
{ "zoom_level", PTR_V_FLOAT(uzbl.behave.zoom_level, 1, cmd_zoom_level)},
@@ -1516,6 +1516,20 @@ create_stdin () {
}
gboolean
+remove_socket_from_array(GIOChannel *chan) {
+ gboolean ret = 0;
+
+ /* TODO: Do wee need to manually free the IO channel or is this
+ * happening implicitly on unref?
+ */
+ ret = g_ptr_array_remove_fast(uzbl.comm.connect_chan, chan);
+ if(!ret)
+ ret = g_ptr_array_remove_fast(uzbl.comm.client_chan, chan);
+
+ return ret;
+}
+
+gboolean
control_socket(GIOChannel *chan) {
struct sockaddr_un remote;
unsigned int t = sizeof(remote);
@@ -1563,6 +1577,8 @@ init_connect_socket() {
replay++;
}
}
+ else
+ g_warning("Error connecting to socket: %s\n", *name);
name++;
}
@@ -1582,9 +1598,11 @@ control_client_socket(GIOChannel *clientchan) {
ret = g_io_channel_read_line(clientchan, &ctl_line, &len, NULL, &error);
if (ret == G_IO_STATUS_ERROR) {
g_warning ("Error reading: %s\n", error->message);
+ remove_socket_from_array(clientchan);
g_io_channel_shutdown(clientchan, TRUE, &error);
return FALSE;
} else if (ret == G_IO_STATUS_EOF) {
+ remove_socket_from_array(clientchan);
/* shutdown and remove channel watch from main loop */
g_io_channel_shutdown(clientchan, TRUE, &error);
return FALSE;