Mercurial > pidgin.yaz
comparison src/gtkft.c @ 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 | 8aa6462e563c |
children | 9dd895fdafdd |
comparison
equal
deleted
inserted
replaced
11924:ced9410eeb73 | 11925:ad62cd866435 |
---|---|
83 | 83 |
84 typedef struct | 84 typedef struct |
85 { | 85 { |
86 GtkTreeIter iter; | 86 GtkTreeIter iter; |
87 time_t start_time; | 87 time_t start_time; |
88 time_t last_updated_time; | |
88 time_t end_time; | 89 time_t end_time; |
89 gboolean in_list; | 90 gboolean in_list; |
90 | 91 |
91 char *name; | 92 char *name; |
92 | 93 |
875 data->in_list = TRUE; | 876 data->in_list = TRUE; |
876 | 877 |
877 gaim_gtkxfer_dialog_show(dialog); | 878 gaim_gtkxfer_dialog_show(dialog); |
878 | 879 |
879 data->start_time = time(NULL); | 880 data->start_time = time(NULL); |
881 data->last_updated_time = 0; | |
880 data->end_time = -1; | 882 data->end_time = -1; |
881 | 883 |
882 type = gaim_xfer_get_type(xfer); | 884 type = gaim_xfer_get_type(xfer); |
883 | 885 |
884 size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer)); | 886 size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer)); |
1002 GaimXfer *xfer) | 1004 GaimXfer *xfer) |
1003 { | 1005 { |
1004 GaimGtkXferUiData *data; | 1006 GaimGtkXferUiData *data; |
1005 char *size_str, *remaining_str; | 1007 char *size_str, *remaining_str; |
1006 GtkTreeSelection *selection; | 1008 GtkTreeSelection *selection; |
1009 time_t current_time; | |
1007 | 1010 |
1008 g_return_if_fail(dialog != NULL); | 1011 g_return_if_fail(dialog != NULL); |
1009 g_return_if_fail(xfer != NULL); | 1012 g_return_if_fail(xfer != NULL); |
1010 | 1013 |
1011 if ((data = GAIM_GTKXFER(xfer)) == NULL) | 1014 if ((data = GAIM_GTKXFER(xfer)) == NULL) |
1012 return; | 1015 return; |
1013 | 1016 |
1014 if (data->in_list == FALSE) | 1017 if (data->in_list == FALSE) |
1015 return; | 1018 return; |
1019 | |
1020 current_time = time(NULL); | |
1021 if (((current_time - data->last_updated_time) == 0) && | |
1022 (!gaim_xfer_is_completed(xfer))) | |
1023 { | |
1024 /* Don't update the window more than once per second */ | |
1025 return; | |
1026 } | |
1027 data->last_updated_time = current_time; | |
1016 | 1028 |
1017 size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer)); | 1029 size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer)); |
1018 remaining_str = gaim_str_size_to_units(gaim_xfer_get_bytes_remaining(xfer)); | 1030 remaining_str = gaim_str_size_to_units(gaim_xfer_get_bytes_remaining(xfer)); |
1019 | 1031 |
1020 gtk_list_store_set(xfer_dialog->model, &data->iter, | 1032 gtk_list_store_set(xfer_dialog->model, &data->iter, |
1021 COLUMN_PROGRESS, gaim_xfer_get_progress(xfer), | 1033 COLUMN_PROGRESS, gaim_xfer_get_progress(xfer), |
1022 COLUMN_SIZE, size_str, | 1034 COLUMN_SIZE, size_str, |
1023 COLUMN_REMAINING, remaining_str, | 1035 COLUMN_REMAINING, remaining_str, |
1024 -1); | 1036 -1); |
1025 | 1037 |
1026 if (gaim_xfer_is_completed(xfer)) { | 1038 if (gaim_xfer_is_completed(xfer)) |
1039 { | |
1027 GdkPixbuf *pixbuf; | 1040 GdkPixbuf *pixbuf; |
1028 | 1041 |
1029 pixbuf = gtk_widget_render_icon(dialog->window, | 1042 pixbuf = gtk_widget_render_icon(dialog->window, |
1030 GAIM_STOCK_FILE_DONE, | 1043 GAIM_STOCK_FILE_DONE, |
1031 GTK_ICON_SIZE_MENU, NULL); | 1044 GTK_ICON_SIZE_MENU, NULL); |
1034 COLUMN_STATUS, pixbuf, | 1047 COLUMN_STATUS, pixbuf, |
1035 COLUMN_REMAINING, _("Finished"), | 1048 COLUMN_REMAINING, _("Finished"), |
1036 -1); | 1049 -1); |
1037 | 1050 |
1038 g_object_unref(pixbuf); | 1051 g_object_unref(pixbuf); |
1039 } | 1052 } |
1040 | 1053 |
1041 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(xfer_dialog->tree)); | 1054 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(xfer_dialog->tree)); |
1042 | 1055 |
1043 if (xfer == dialog->selected_xfer) | 1056 if (xfer == dialog->selected_xfer) |
1044 update_detailed_info(xfer_dialog, xfer); | 1057 update_detailed_info(xfer_dialog, xfer); |