Scree Updating - Updating toooo soooow
- From: Przemysław Więckowski <przemyslaw wieckowski epf pl>
- To: gtk-app-devel-list gnome org
- Subject: Scree Updating - Updating toooo soooow
- Date: Tue, 26 Jul 2005 09:49:55 +0200
Hello ,
first of all i'm must say that i'm beginer in GTK, so please be patient.
Well,
i'm trying write DAQ/Visualisation application using GTk2.x, but i'm
little confused , because i can't obtain satisfied efficiency. I written
sample code to check this usig signals :
"motion_notify_event" to obtain mouse movement and position, and next i
emit "configure_event" where:
...
data_tpgvis->mouse_x = x;
data_tpgvis->mouse_y = y;
g_signal_emit_by_name(GTK_OBJECT(widget),"configure_event",GTK_TYPE_NONE,&ret_val);
return ..
In "configure_event" handler i prepare new GdkPixmap and i draw two
filled rectangles ( important thing is that application works in
fullscreen mode in 1024x768 up to 1600 x 1200) and two lines from 0 to
height ( in x mouse position ) and 0 to width (in y mouse position ) -
it will be cursor, next i emit "expose_event" :
...
if(data_tpgvis->main_chart!=NULL){
gdk_pixmap_unref(data_tpgvis->main_chart);
data_tpgvis->main_chart =
gdk_pixmap_new(data_tpgvis->main_wnd->window,data_tpgvis->main_chart_width,data_tpgvis->main_chart_height,-1);
gdk_draw_rectangle(data_tpgvis->main_chart,
data_tpgvis->main_chart_gc,
TRUE,
0,
0
,data_tpgvis->main_chart_width,data_tpgvis->main_chart_height);
gdk_draw_rectangle(data_tpgvis->main_chart,
data_tpgvis->main_chart_wnd_gc,
TRUE,
100,
5
,data_tpgvis->main_chart_width-100-100,data_tpgvis->main_chart_height-50);
gdk_draw_rectangle(data_tpgvis->main_chart,
window->style->black_gc,
FALSE,
100,
5
,data_tpgvis->main_chart_width-100-100,data_tpgvis->main_chart_height-50);
}
if((data_tpgvis->mouse_x >= 100 && data_tpgvis->mouse_x <=
data_tpgvis->main_chart_width-100) && (data_tpgvis->mouse_y >=
data_tpgvis->main_chart_y && data_tpgvis->mouse_y <=
data_tpgvis->main_chart_height-50)){
gdk_draw_line(data_tpgvis->main_chart,data_tpgvis->main_chart_gc,100,data_tpgvis->mouse_y,
data_tpgvis->main_chart_width-100, data_tpgvis->mouse_y);
gdk_draw_line(data_tpgvis->main_chart,data_tpgvis->main_chart_gc,data_tpgvis->mouse_x,5,
data_tpgvis->mouse_x,data_tpgvis->main_chart_height-45);
sprintf(text," Time : %d, Pressure :
%d",data_tpgvis->mouse_x,data_tpgvis->mouse_y);
layout = gtk_widget_create_pango_layout (data_tpgvis->main_wnd,text);
desc = pango_font_description_from_string ("Trebuchet MS 9");
pango_layout_set_font_description (layout, desc);
gdk_draw_layout_with_colors( data_tpgvis->main_chart,
data_tpgvis->main_chart_gc,
data_tpgvis->mouse_x+1,
data_tpgvis->mouse_y+1,
layout,&(data_tpgvis->mouse_info_label_rgb1),&(data_tpgvis->mouse_info_label_rgb2));
pango_font_description_free (desc);
}
g_signal_emit_by_name(GTK_OBJECT(window),"expose_event",GTK_TYPE_NONE,&ret_val);
return...
"expose_event" handler you will see below :
...
gdk_draw_drawable(window->window,
data_tpgvis->program_name_gc,
data_tpgvis->program_name_bar,
0,0,
0,0,
data_tpgvis->width, data_tpgvis->program_name_bar_height);
gdk_draw_drawable(window->window,
data_tpgvis->program_name_gc,
data_tpgvis->main_chart,
0,0,
data_tpgvis->main_chart_x,data_tpgvis->main_chart_y,
data_tpgvis->main_chart_width,data_tpgvis->main_chart_height);
that's all...
I know that i colud update only lines it probably will be faster but i
think that it will not solve my problems, because in future i will need
update whole screen ( samples will be received evry 50ms, 100ms etc.. )
. How can i speedup redrawing or drawing on pixmaps ( because i thing
drawing on pixmap slows down my app ). Is in gtk fastest drawing metod
versus draving on pixmap??
Przemek Wieckowski
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]