[Xfce4-commits] <xfce4-cpugraph-plugin:master> Change the way drawing code is called

Florian noreply at xfce.org
Sat Apr 17 16:16:30 CEST 2010


Updating branch refs/heads/master
         to 67776854c6f200ae41561f1d3d4145c11d108edc (commit)
       from 4690fcbad685a0cdda13c95a57714b6b0a58d5ee (commit)

commit 67776854c6f200ae41561f1d3d4145c11d108edc
Author: Florian <frivoal at gmail.com>
Date:   Mon Mar 1 21:21:12 2010 +0900

    Change the way drawing code is called
    
    Don't preallocate resources that the various drawing modes may or may
    not need, and let them do it. Also, use proper gtk background settings
    rather than pait the entire widget manually with the background color.

 panel-plugin/cpu.c  |   25 +++++++++----------------
 panel-plugin/mode.c |   18 ++++++++++++++----
 panel-plugin/mode.h |    8 ++++----
 3 files changed, 27 insertions(+), 24 deletions(-)

diff --git a/panel-plugin/cpu.c b/panel-plugin/cpu.c
index 65fe5a1..a9c4366 100644
--- a/panel-plugin/cpu.c
+++ b/panel-plugin/cpu.c
@@ -198,34 +198,22 @@ void DrawGraph( CPUGraph * base )
 	w = da->allocation.width;
 	h = da->allocation.height;
 
-	/* Dynamically allocated everytime just in case depth changes */
-	GdkGC *fg1 = gdk_gc_new( da->window );
-	GdkGC *fg2 = gdk_gc_new( da->window );
-	GdkGC *bg = gdk_gc_new( da->window );
-	gdk_gc_set_rgb_fg_color( bg, &base->colors[0] );
-
-	gdk_draw_rectangle( da->window, bg, TRUE, 0, 0, w, h );
-
 	if( base->m_Mode == 0 )
 	{
-		drawGraphModeNormal( base, fg1, da, w, h );
+		drawGraphModeNormal( base, da, w, h );
 	}
 	else if( base->m_Mode == 1 )
 	{
-		drawGraphModeLED( base, fg1, fg2, da, w, h );
+		drawGraphModeLED( base, da, w, h );
 	}
 	else if( base->m_Mode == 2 )
 	{
-		drawGraphModeNoHistory( base, fg1, fg2, da, w, h );
+		drawGraphModeNoHistory( base, da, w, h );
 	}
 	else if( base->m_Mode == 3 )
 	{
-		drawGraphGrid(base, fg1, fg2, da, w, h);
+		drawGraphGrid(base, da, w, h);
 	}
-
-	g_object_unref( fg2 );
-	g_object_unref( fg1 );
-	g_object_unref( bg );
 }
 
 void DrawAreaExposeEvent( GtkWidget * da, GdkEventExpose * event, gpointer data )
@@ -312,4 +300,9 @@ void set_mode( CPUGraph *base, int mode )
 void set_color( CPUGraph *base, int number, GdkColor color )
 {
 	base->colors[number] = color;
+	if( number == 0 )
+	{
+		gtk_widget_modify_bg( base->m_DrawArea, GTK_STATE_INSENSITIVE, &base->colors[0] );
+		gtk_widget_modify_bg( base->m_DrawArea, GTK_STATE_NORMAL, &base->colors[0] );
+	}
 }
diff --git a/panel-plugin/mode.c b/panel-plugin/mode.c
index 5206daf..811f546 100644
--- a/panel-plugin/mode.c
+++ b/panel-plugin/mode.c
@@ -37,12 +37,13 @@ static void MixAndApplyColors( double ratio, GdkColor *color1, GdkColor *color2,
 	gdk_gc_set_rgb_fg_color( target, &color );
 }
 
-void drawGraphModeNormal( CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int h )
+void drawGraphModeNormal( CPUGraph *base, GtkWidget *da, int w, int h )
 {
 	int x, y;
 	long usage;
 	double t;
 	int tmp;
+	GdkGC *fg1 = gdk_gc_new( da->window );
 
 	if( base->m_ColorMode == 0 )
 		gdk_gc_set_rgb_fg_color( fg1, &base->colors[1] );
@@ -70,13 +71,16 @@ void drawGraphModeNormal( CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int
 			}
 		}
 	}
+	g_object_unref( fg1 );
 }
 
-void drawGraphModeLED( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h )
+void drawGraphModeLED( CPUGraph *base, GtkWidget *da, int w, int h )
 {
 	int nrx = (int)((w + 1) / 3.0);
 	int nry = (int)((h + 1) / 2.0);
 	int x, y;
+	GdkGC *fg1 = gdk_gc_new( da->window );
+	GdkGC *fg2 = gdk_gc_new( da->window );
 
 	gdk_gc_set_rgb_fg_color( fg1, &base->colors[1] );
 	gdk_gc_set_rgb_fg_color( fg2, &base->colors[2] );
@@ -103,14 +107,17 @@ void drawGraphModeLED( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, in
 
 		}
 	}
+	g_object_unref( fg1 );
+	g_object_unref( fg2 );
 }
 
-void drawGraphModeNoHistory( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h )
+void drawGraphModeNoHistory( CPUGraph *base, GtkWidget *da, int w, int h )
 {
 	int y;
 	long usage = h * base->m_History[0] / CPU_SCALE;
 	int tmp = 0;
 	double t;
+	GdkGC *fg1 = gdk_gc_new( da->window );
 
 	if( base->m_ColorMode == 0 )
 	{
@@ -129,6 +136,7 @@ void drawGraphModeNoHistory( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *
 			gdk_draw_line( da->window, fg1, 0, y, w-1, y );
 		}
 	}
+	g_object_unref( fg1 );
 }
 
 typedef struct
@@ -137,13 +145,14 @@ typedef struct
 	long y;
 } point;
 
-void drawGraphGrid( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h )
+void drawGraphGrid( CPUGraph *base, GtkWidget *da, int w, int h )
 {
 	int x, y;
 	long usage;
 	point last, current;
 	last.x = 0;
 	last.y = h;
+	GdkGC *fg1 = gdk_gc_new( da->window );
 
 	gdk_gc_set_rgb_fg_color( fg1, &base->colors[1] );
 	for( x = 0; x * 6 < w; x++ )
@@ -164,4 +173,5 @@ void drawGraphGrid( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w
 		gdk_draw_line( da->window, fg1, current.x, current.y, last.x, last.y );
 		last = current;
 	}
+	g_object_unref( fg1 );
 }
diff --git a/panel-plugin/mode.h b/panel-plugin/mode.h
index 7a38b31..8807fe1 100644
--- a/panel-plugin/mode.h
+++ b/panel-plugin/mode.h
@@ -3,9 +3,9 @@
 
 #include "cpu.h"
 
-void drawGraphModeNormal( CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int h );
-void drawGraphModeLED( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h );
-void drawGraphModeNoHistory( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h );
-void drawGraphGrid( CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h );
+void drawGraphModeNormal( CPUGraph *base, GtkWidget *da, int w, int h );
+void drawGraphModeLED( CPUGraph *base, GtkWidget *da, int w, int h );
+void drawGraphModeNoHistory( CPUGraph *base, GtkWidget *da, int w, int h );
+void drawGraphGrid( CPUGraph *base, GtkWidget *da, int w, int h );
 
 #endif



More information about the Xfce4-commits mailing list