diff options
author | Robert Manea <gotmor@gmail.com> | 2009-10-14 10:01:34 +0200 |
---|---|---|
committer | Robert Manea <gotmor@gmail.com> | 2009-10-14 10:01:34 +0200 |
commit | 8fa27940fbc6e0bdde34567dc882d2c6aad6c3b8 (patch) | |
tree | f309cbbbcb421568051e9c884dfff484ae65f895 | |
parent | 5b1f6a5deed654e651e1de249a81b895d0073313 (diff) |
added view_source, added remove_socket_from_array()
-rw-r--r-- | callbacks.c | 2 | ||||
-rw-r--r-- | callbacks.h | 2 | ||||
-rw-r--r-- | events.c | 5 | ||||
-rw-r--r-- | uzbl-core.c | 20 |
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(); @@ -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; |