[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