Mercurial > pidgin
changeset 11925:ad62cd866435
[gaim-migrate @ 14216]
sf patch #1292363, from John Eckerdal
Don't update the file transfer dialog more than once per second
(it made stuff use a lot of CPU)
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 31 Oct 2005 05:52:19 +0000 |
parents | ced9410eeb73 |
children | 5b703a92e79d |
files | COPYRIGHT src/gtkft.c |
diffstat | 2 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Mon Oct 31 05:40:35 2005 +0000 +++ b/COPYRIGHT Mon Oct 31 05:52:19 2005 +0000 @@ -63,13 +63,14 @@ Alex Duggan Tom Dyas Marc E. -Marc Etcheverry Andrew Echols +John Eckerdal Sean Egan <sean.egan@binghamton.edu> Nelson Elhage Ignacio J. Elia Brian Enigma Stefan Esser +Marc Etcheverry Larry Ewing Gábor Farkas Jesse Farmer
--- a/src/gtkft.c Mon Oct 31 05:40:35 2005 +0000 +++ b/src/gtkft.c Mon Oct 31 05:52:19 2005 +0000 @@ -85,6 +85,7 @@ { GtkTreeIter iter; time_t start_time; + time_t last_updated_time; time_t end_time; gboolean in_list; @@ -877,6 +878,7 @@ gaim_gtkxfer_dialog_show(dialog); data->start_time = time(NULL); + data->last_updated_time = 0; data->end_time = -1; type = gaim_xfer_get_type(xfer); @@ -1004,6 +1006,7 @@ GaimGtkXferUiData *data; char *size_str, *remaining_str; GtkTreeSelection *selection; + time_t current_time; g_return_if_fail(dialog != NULL); g_return_if_fail(xfer != NULL); @@ -1014,6 +1017,15 @@ if (data->in_list == FALSE) return; + current_time = time(NULL); + if (((current_time - data->last_updated_time) == 0) && + (!gaim_xfer_is_completed(xfer))) + { + /* Don't update the window more than once per second */ + return; + } + data->last_updated_time = current_time; + size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer)); remaining_str = gaim_str_size_to_units(gaim_xfer_get_bytes_remaining(xfer)); @@ -1023,7 +1035,8 @@ COLUMN_REMAINING, remaining_str, -1); - if (gaim_xfer_is_completed(xfer)) { + if (gaim_xfer_is_completed(xfer)) + { GdkPixbuf *pixbuf; pixbuf = gtk_widget_render_icon(dialog->window, @@ -1036,7 +1049,7 @@ -1); g_object_unref(pixbuf); - } + } selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(xfer_dialog->tree));