diff --git a/gnome-system-monitor-2.22.0.tar.bz2 b/gnome-system-monitor-2.22.0.tar.bz2 deleted file mode 100644 index d23d075..0000000 --- a/gnome-system-monitor-2.22.0.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a2e6b6c185063fc43e6d6293a64cd3fa6f32be58b682bc58e5913c94aa3cd1e2 -size 1935178 diff --git a/gnome-system-monitor-2.22.1.tar.bz2 b/gnome-system-monitor-2.22.1.tar.bz2 new file mode 100644 index 0000000..5efea78 --- /dev/null +++ b/gnome-system-monitor-2.22.1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f78f8865e70e1e1d46db219950e9e4effda4cb9521a23f66130268f9edb47070 +size 1936032 diff --git a/gnome-system-monitor-performance.patch b/gnome-system-monitor-performance.patch new file mode 100644 index 0000000..2c3c481 --- /dev/null +++ b/gnome-system-monitor-performance.patch @@ -0,0 +1,443 @@ +Index: src/load-graph.cpp +=================================================================== +--- src/load-graph.cpp (revision 2387) ++++ src/load-graph.cpp (revision 2388) +@@ -63,87 +63,84 @@ + void draw_background(LoadGraph *g) { + double dash[2] = { 1.0, 2.0 }; + cairo_t *cr; +- cairo_t* tmp_cr; + guint i; + unsigned num_bars; + char *caption; + cairo_text_extents_t extents; + +- + num_bars = g->num_bars(); + g->graph_dely = (g->draw_height - 15) / num_bars; /* round to int to avoid AA blur */ + g->real_draw_height = g->graph_dely * num_bars; + g->graph_delx = (g->draw_width - 2.0 - g->rmargin - g->indent) / (LoadGraph::NUM_POINTS - 3); + g->graph_buffer_offset = (int) (1.5 * g->graph_delx) + FRAME_WIDTH ; + +- cr = cairo_create (g->buffer); +- g->background_buffer = cairo_surface_create_similar (cairo_get_target (cr), +- CAIRO_CONTENT_COLOR_ALPHA, +- g->draw_width + (2*FRAME_WIDTH), +- g->draw_height + (2*FRAME_WIDTH)); // ** We need the whole area as we are now setting the background colour here ++ g->background = gdk_pixmap_new (GDK_DRAWABLE (g->disp->window), ++ g->disp->allocation.width, ++ g->disp->allocation.height, ++ -1); ++ cr = gdk_cairo_create (g->background); + +- tmp_cr = cairo_create (g->background_buffer); +- + // set the background colour + GtkStyle *style = gtk_widget_get_style (ProcData::get_instance()->notebook); +- gdk_cairo_set_source_color (tmp_cr, &style->bg[GTK_STATE_NORMAL]); +- cairo_paint (tmp_cr); ++ gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_NORMAL]); ++ cairo_paint (cr); + + /* draw frame */ +- cairo_translate (tmp_cr, FRAME_WIDTH, FRAME_WIDTH); ++ cairo_translate (cr, FRAME_WIDTH, FRAME_WIDTH); + + /* Draw background rectangle */ +- cairo_set_source_rgb (tmp_cr, 1.0, 1.0, 1.0); +- cairo_rectangle (tmp_cr, g->rmargin + g->indent, 0, ++ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); ++ cairo_rectangle (cr, g->rmargin + g->indent, 0, + g->draw_width - g->rmargin - g->indent, g->real_draw_height); +- cairo_fill(tmp_cr); ++ cairo_fill(cr); + +- cairo_set_line_width (tmp_cr, 1.0); +- cairo_set_dash (tmp_cr, dash, 2, 0); +- cairo_set_font_size (tmp_cr, g->fontsize); ++ cairo_set_line_width (cr, 1.0); ++ cairo_set_dash (cr, dash, 2, 0); ++ cairo_set_font_size (cr, g->fontsize); + + for (i = 0; i <= num_bars; ++i) { + double y; + + if (i == 0) +- y = 0.5 + g->fontsize / 2.0; ++ y = 0.5 + g->fontsize / 2.0; + else if (i == num_bars) +- y = i * g->graph_dely + 0.5; ++ y = i * g->graph_dely + 0.5; + else +- y = i * g->graph_dely + g->fontsize / 2.0; +- gdk_cairo_set_source_color (tmp_cr, &style->fg[GTK_STATE_NORMAL]); ++ y = i * g->graph_dely + g->fontsize / 2.0; ++ ++ gdk_cairo_set_source_color (cr, &style->fg[GTK_STATE_NORMAL]); + if (g->type == LOAD_GRAPH_NET) { + // operation orders matters so it's 0 if i == num_bars + unsigned rate = g->net.max - (i * g->net.max / num_bars); + const std::string caption(procman::format_rate(rate, g->net.max)); +- cairo_text_extents (tmp_cr, caption.c_str(), &extents); +- cairo_move_to (tmp_cr, g->indent - extents.width + 20, y); +- cairo_show_text (tmp_cr, caption.c_str()); ++ cairo_text_extents (cr, caption.c_str(), &extents); ++ cairo_move_to (cr, g->indent - extents.width + 20, y); ++ cairo_show_text (cr, caption.c_str()); + } else { + // operation orders matters so it's 0 if i == num_bars + caption = g_strdup_printf("%d %%", 100 - i * (100 / num_bars)); +- cairo_text_extents (tmp_cr, caption, &extents); +- cairo_move_to (tmp_cr, g->indent - extents.width + 20, y); +- cairo_show_text (tmp_cr, caption); ++ cairo_text_extents (cr, caption, &extents); ++ cairo_move_to (cr, g->indent - extents.width + 20, y); ++ cairo_show_text (cr, caption); + g_free (caption); + } + +- cairo_set_source_rgba (tmp_cr, 0, 0, 0, 0.75); +- cairo_move_to (tmp_cr, g->rmargin + g->indent - 3, i * g->graph_dely + 0.5); +- cairo_line_to (tmp_cr, g->draw_width - 0.5, i * g->graph_dely + 0.5); ++ cairo_set_source_rgba (cr, 0, 0, 0, 0.75); ++ cairo_move_to (cr, g->rmargin + g->indent - 3, i * g->graph_dely + 0.5); ++ cairo_line_to (cr, g->draw_width - 0.5, i * g->graph_dely + 0.5); + } +- cairo_stroke (tmp_cr); ++ cairo_stroke (cr); + +- cairo_set_dash (tmp_cr, dash, 2, 1.5); ++ cairo_set_dash (cr, dash, 2, 1.5); + + const unsigned total_seconds = g->speed * (LoadGraph::NUM_POINTS - 2) / 1000; + + for (unsigned int i = 0; i < 7; i++) { + double x = (i) * (g->draw_width - g->rmargin - g->indent) / 6; +- cairo_set_source_rgba (tmp_cr, 0, 0, 0, 0.75); +- cairo_move_to (tmp_cr, (ceil(x) + 0.5) + g->rmargin + g->indent, 0.5); +- cairo_line_to (tmp_cr, (ceil(x) + 0.5) + g->rmargin + g->indent, g->real_draw_height + 4.5); +- cairo_stroke(tmp_cr); ++ cairo_set_source_rgba (cr, 0, 0, 0, 0.75); ++ cairo_move_to (cr, (ceil(x) + 0.5) + g->rmargin + g->indent, 0.5); ++ cairo_line_to (cr, (ceil(x) + 0.5) + g->rmargin + g->indent, g->real_draw_height + 4.5); ++ cairo_stroke(cr); + unsigned seconds = total_seconds - i * total_seconds / 6; + const char* format; + if (i == 0) +@@ -151,89 +148,26 @@ + else + format = "%u"; + caption = g_strdup_printf(format, seconds); +- cairo_text_extents (tmp_cr, caption, &extents); +- cairo_move_to (tmp_cr, ((ceil(x) + 0.5) + g->rmargin + g->indent) - (extents.width/2), g->draw_height); +- gdk_cairo_set_source_color (tmp_cr, &style->fg[GTK_STATE_NORMAL]); +- cairo_show_text (tmp_cr, caption); ++ cairo_text_extents (cr, caption, &extents); ++ cairo_move_to (cr, ((ceil(x) + 0.5) + g->rmargin + g->indent) - (extents.width/2), g->draw_height); ++ gdk_cairo_set_source_color (cr, &style->fg[GTK_STATE_NORMAL]); ++ cairo_show_text (cr, caption); + g_free (caption); + } + +- cairo_stroke (tmp_cr); +- cairo_destroy (tmp_cr); +- cairo_destroy (cr); ++ cairo_stroke (cr); ++ cairo_destroy (cr); + } + + /* Redraws the backing buffer for the load graph and updates the window */ + void + load_graph_draw (LoadGraph *g) + { +- cairo_t *cr; +- guint i, j; +- gdouble tmp; +- +- cr = cairo_create (g->buffer); +- +- /* draw the graph */ +- if ((g->render_counter == 0)) { +- cairo_surface_destroy(g->graph_buffer); +- cairo_t* tmp_cr; +- +- g->graph_buffer = cairo_surface_create_similar (cairo_get_target (cr), +- CAIRO_CONTENT_COLOR_ALPHA, +- g->draw_width, +- g->draw_height); +- tmp_cr = cairo_create (g->graph_buffer); +- +- cairo_set_line_width (tmp_cr, 1.5); +- cairo_set_line_cap (tmp_cr, CAIRO_LINE_CAP_ROUND); +- cairo_set_line_join (tmp_cr, CAIRO_LINE_JOIN_ROUND); +- +- for (j = 0; j < g->n; ++j) { +- cairo_move_to (tmp_cr, +- g->draw_width - 2.0, +- (1.0f - g->data[0][j]) * g->real_draw_height); +- gdk_cairo_set_source_color (tmp_cr, &(g->colors [j])); +- +- for (i = 1; i < LoadGraph::NUM_POINTS; ++i) { +- if (g->data[i][j] == -1.0f) +- continue; +- +- cairo_curve_to (tmp_cr, +- (g->draw_width - (i-1) * g->graph_delx) - (g->graph_delx/2), +- (1.0f - g->data[i-1][j]) * g->real_draw_height, +- (g->draw_width - i * g->graph_delx) + (g->graph_delx/2), +- (1.0f - g->data[i][j]) * g->real_draw_height, +- g->draw_width - i * g->graph_delx, +- (1.0f - g->data[i][j]) * g->real_draw_height); +- } +- +- cairo_stroke (tmp_cr); +- +- } +- cairo_destroy (tmp_cr); +- } +- +- /* Composite and clip the surfaces together */ +- if (g->background_buffer == NULL) { +- draw_background(g); +- } +- cairo_set_source_surface (cr, g->background_buffer, 0, 0); +- cairo_paint (cr); +- +- tmp = (float)(g->draw_width - g->rmargin - g->indent) / (float)LoadGraph::NUM_POINTS; +- tmp = tmp / g->frames_per_unit; +- tmp = tmp * g->render_counter; +- cairo_set_source_surface (cr, g->graph_buffer, g->graph_buffer_offset - tmp, FRAME_WIDTH); +- cairo_rectangle (cr, g->rmargin + g->indent + FRAME_WIDTH + 1, FRAME_WIDTH - 1, +- g->draw_width - g->rmargin - g->indent - 1 , g->real_draw_height + FRAME_WIDTH - 1); +- cairo_fill (cr); +- cairo_destroy (cr); +- + /* repaint */ + gtk_widget_queue_draw (g->disp); + } + +-static int load_graph_update (gpointer user_data); // predeclare load_graph_update so we can compile ;) ++static int load_graph_update (gpointer user_data); // predeclare load_graph_update so we can compile ;) + + static gboolean + load_graph_configure (GtkWidget *widget, +@@ -241,37 +175,16 @@ + gpointer data_ptr) + { + LoadGraph * const g = static_cast(data_ptr); +- cairo_t *cr; +- + g->draw_width = widget->allocation.width - 2 * FRAME_WIDTH; + g->draw_height = widget->allocation.height - 2 * FRAME_WIDTH; + +- // FIXME: +- // g->frames_per_unit = g->draw_width/(LoadGraph::NUM_POINTS); +- // knock FRAMES down to 5 until cairo gets faster +- +- if(g->timer_index) { +- g_source_remove (g->timer_index); +- g->timer_index = g_timeout_add (g->speed / g->frames_per_unit, +- load_graph_update, +- g); ++ if (g->background) { ++ g_object_unref (g->background); ++ g->background = NULL; + } + +- cr = gdk_cairo_create (widget->window); +- +- if (g->buffer) +- cairo_surface_destroy (g->buffer); +- +- g->buffer = cairo_surface_create_similar (cairo_get_target (cr), +- CAIRO_CONTENT_COLOR, +- widget->allocation.width, +- widget->allocation.height); +- +- cairo_destroy (cr); +- +- if (g->background_buffer != NULL) { +- cairo_surface_destroy(g->background_buffer); +- g->background_buffer = NULL; ++ if (g->gc == NULL) { ++ g->gc = gdk_gc_new (GDK_DRAWABLE (widget->window)); + } + + load_graph_draw (g); +@@ -285,14 +198,60 @@ + gpointer data_ptr) + { + LoadGraph * const g = static_cast(data_ptr); +- cairo_t *cr; + +- cr = gdk_cairo_create(widget->window); ++ guint i, j; ++ gdouble sample_width, x_offset; + +- cairo_set_source_surface(cr, g->buffer, 0, 0); +- cairo_paint(cr); +- cairo_destroy(cr); ++ if (g->background == NULL) { ++ draw_background(g); ++ } ++ gdk_draw_drawable (g->disp->window, ++ g->gc, ++ g->background, ++ 0, 0, 0, 0, ++ g->disp->allocation.width, ++ g->disp->allocation.height); + ++ /* Number of pixels wide for one graph point */ ++ sample_width = (float)(g->draw_width - g->rmargin - g->indent) / (float)LoadGraph::NUM_POINTS; ++ /* General offset */ ++ x_offset = g->draw_width - g->rmargin + (sample_width*2); ++ /* Subframe offset */ ++ x_offset += g->rmargin - ((sample_width / g->frames_per_unit) * g->render_counter); ++ ++ /* draw the graph */ ++ cairo_t* cr; ++ ++ cr = gdk_cairo_create (g->disp->window); ++ ++ cairo_set_line_width (cr, 1); ++ cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); ++ cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); ++ cairo_rectangle (cr, g->rmargin + g->indent + FRAME_WIDTH + 1, FRAME_WIDTH - 1, ++ g->draw_width - g->rmargin - g->indent - 1, g->real_draw_height + FRAME_WIDTH - 1); ++ cairo_clip(cr); ++ ++ for (j = 0; j < g->n; ++j) { ++ cairo_move_to (cr, x_offset, (1.0f - g->data[0][j]) * g->real_draw_height); ++ gdk_cairo_set_source_color (cr, &(g->colors [j])); ++ ++ for (i = 1; i < LoadGraph::NUM_POINTS; ++i) { ++ if (g->data[i][j] == -1.0f) ++ continue; ++ cairo_curve_to (cr, ++ x_offset - ((i - 0.5f) * g->graph_delx), ++ (1.0f - g->data[i-1][j]) * g->real_draw_height + 3.5f, ++ x_offset - ((i - 0.5f) * g->graph_delx), ++ (1.0f - g->data[i][j]) * g->real_draw_height + 3.5f, ++ x_offset - (i * g->graph_delx), ++ (1.0f - g->data[i][j]) * g->real_draw_height + 3.5f); ++ } ++ cairo_stroke (cr); ++ ++ } ++ ++ cairo_destroy (cr); ++ + return TRUE; + } + +@@ -480,9 +440,9 @@ + g->net.max = new_max; + + // force the graph background to be redrawn now that scale has changed +- if (g->background_buffer != NULL) { +- cairo_surface_destroy(g->background_buffer); +- g->background_buffer = NULL; ++ if (g->background) { ++ g_object_unref (g->background); ++ g->background = NULL; + } + } + +@@ -559,7 +519,7 @@ + { + LoadGraph * const g = static_cast(user_data); + +- if (g->render_counter == 0) { ++ if (g->render_counter == g->frames_per_unit - 1) { + std::rotate(&g->data[0], &g->data[LoadGraph::NUM_POINTS - 1], &g->data[LoadGraph::NUM_POINTS]); + + switch (g->type) { +@@ -597,10 +557,8 @@ + if (this->timer_index) + g_source_remove(this->timer_index); + +- if (this->buffer) { +- cairo_surface_destroy(this->buffer); +- this->buffer = NULL; +- } ++ if (this->background) ++ g_object_unref (this->background); + } + + +@@ -633,9 +591,8 @@ + graph_buffer_offset(0), + main_widget(NULL), + disp(NULL), +- buffer(NULL), +- graph_buffer(NULL), +- background_buffer(NULL), ++ gc(NULL), ++ background(NULL), + timer_index(0), + draw(FALSE), + mem_color_picker(NULL), +@@ -643,7 +600,10 @@ + { + LoadGraph * const g = this; + +- g->frames_per_unit = 5; // this will be changed but needs initialising ++ // FIXME: ++ // on configure, g->frames_per_unit = g->draw_width/(LoadGraph::NUM_POINTS); ++ // knock FRAMES down to 5 until cairo gets faster ++ g->frames_per_unit = 10; // this will be changed but needs initialising + g->fontsize = 8.0; + g->rmargin = 3.5 * g->fontsize; + g->indent = 24.0; +@@ -700,9 +660,7 @@ + } + + g->timer_index = 0; +- g->render_counter = g->frames_per_unit; +- g->background_buffer = NULL; +- g->graph_buffer = NULL; ++ g->render_counter = (g->frames_per_unit - 1); + g->draw = FALSE; + + g->main_widget = gtk_vbox_new (FALSE, FALSE); +@@ -730,10 +688,6 @@ + g->data[i] = &g->data_block[0] + i * g->n; + + gtk_widget_show_all (g->main_widget); +- +- load_graph_start(g); +- load_graph_stop(g); +- + } + + void +@@ -775,9 +729,10 @@ + load_graph_update, + g); + } +- if (g->background_buffer != NULL) { +- cairo_surface_destroy(g->background_buffer); +- g->background_buffer = NULL; ++ ++ if (g->background != NULL) { ++ g_object_unref(g->background); ++ g->background = NULL; + } + } + +Index: src/load-graph.h +=================================================================== +--- src/load-graph.h (revision 2387) ++++ src/load-graph.h (revision 2388) +@@ -65,9 +65,8 @@ + GtkWidget *main_widget; + GtkWidget *disp; + +- cairo_surface_t *buffer; +- cairo_surface_t *graph_buffer; +- cairo_surface_t *background_buffer; ++ GdkGC *gc; ++ GdkDrawable *background; + + guint timer_index; + diff --git a/gnome-system-monitor.changes b/gnome-system-monitor.changes index a99e486..b78c6a4 100644 --- a/gnome-system-monitor.changes +++ b/gnome-system-monitor.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Fri May 9 01:07:50 CEST 2008 - jpr@suse.de + +- Update to version 2.22.1 +* lsof: don't crash on invalid regex (#524162). +* graphs: fixed the time scale (#521394). +- Add gnome-system-monitor-performance.patch to Fix performance on + certain video cards (bnc #374934) + ------------------------------------------------------------------- Fri Mar 14 05:43:07 CET 2008 - maw@suse.de diff --git a/gnome-system-monitor.spec b/gnome-system-monitor.spec index 03ebdb0..4b838e6 100644 --- a/gnome-system-monitor.spec +++ b/gnome-system-monitor.spec @@ -1,5 +1,5 @@ # -# spec file for package gnome-system-monitor (Version 2.22.0) +# spec file for package gnome-system-monitor (Version 2.22.1) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -15,7 +15,7 @@ Name: gnome-system-monitor BuildRequires: docbook-xsl-stylesheets fdupes gcc-c++ gconf2-devel glib2-devel gnome-common gnome-doc-utils-devel gnome-icon-theme-devel gnome-vfs2-devel gtk2-devel gtkmm2-devel intltool libglade2-devel libgnomeui-devel libgtop-devel librsvg-devel libwnck-devel libxml2-devel perl-XML-Parser scrollkeeper update-desktop-files License: GPL v2 or later Group: System/GUI/GNOME -Version: 2.22.0 +Version: 2.22.1 Release: 1 Source0: ftp://ftp.gnome.org/pub/GNOME/sources/gnome-system-monitor/2.20/%{name}-%{version}.tar.bz2 Url: http://www.gnome.org @@ -25,6 +25,8 @@ Requires: gnome-icon-theme Requires: %{name}-lang = %{version} #PATCH-FIX-UPSTREAM gnome-system-monitor-sysinfo.patch bnc253997 bgo474004 sreeves@novell.com Patch1: gnome-system-monitor-sysinfo.patch +#PATCH-FIX-UPSTREAM gnome-system-monitor-performance.patch bnc374934 bgo507797 jpr@novell.com +Patch2: gnome-system-monitor-performance.patch %gconf_schemas_prereq %description @@ -42,6 +44,7 @@ Authors: %prep %setup -q %patch1 -p0 +%patch2 -p0 %build %configure \ @@ -81,6 +84,12 @@ rm -rf $RPM_BUILD_ROOT %files lang -f %{name}.lang %changelog +* Fri May 09 2008 jpr@suse.de +- Update to version 2.22.1 + * lsof: don't crash on invalid regex (#524162). + * graphs: fixed the time scale (#521394). +- Add gnome-system-monitor-performance.patch to Fix performance on + certain video cards (bnc #374934) * Fri Mar 14 2008 maw@suse.de - Update to version 2.22.0: + Updated translations. @@ -244,7 +253,7 @@ rm -rf $RPM_BUILD_ROOT - Fixed a couple of small leaks. * Thu Jul 20 2006 jpr@suse.de - Call aclocal to fix build after altering configure.in in %%prep -* Tue Jun 06 2006 jimmyk@suse.de +* Wed Jun 07 2006 jimmyk@suse.de - Modify existing gnome-system-monitor-sysinfo.patch to properly parse /proc/cpuinfo on ppc architecture and avoid crashing, BNC #179031. * Mon May 22 2006 jpr@suse.de @@ -271,7 +280,7 @@ rm -rf $RPM_BUILD_ROOT - added system info tab (BNC #67255) * Wed Jan 25 2006 mls@suse.de - converted neededforbuild to BuildRequires -* Wed Nov 30 2005 gekker@suse.de +* Thu Dec 01 2005 gekker@suse.de - Update to version 2.12.2 * Thu Oct 13 2005 gekker@suse.de - Update to version 2.12.1 @@ -290,7 +299,7 @@ rm -rf $RPM_BUILD_ROOT * Wed Mar 16 2005 clahey@suse.de - Remove patch to remove icon. - Add patch to fix menu name. -* Wed Mar 09 2005 gekker@suse.de +* Thu Mar 10 2005 gekker@suse.de - Update to version 2.10.0 (GNOME 2.10). * Thu Mar 03 2005 gekker@suse.de - Update to version 2.9.92