I'm having trouble with refresh when I used either Pango or Cairo calls with GTK over Direct FB. I've modified the scribble.c sample so that some test text is drawn using pango when a button pressed or a movement event occurs but I don't see the text unless I press the meta key (or windows key depending on the keyboard) and move the entire region. It looks like this causes the whole drawing area to be refreshed.
Can anyone explain the concepts or have documentation pointers or better yet a fix for this problem? gint col_select = 0; char *szText = "Test String"; int lenText = 11; /* Draw a rectangle on the screen */ static void draw_brush( GtkWidget *widget, gdouble x, gdouble y) { GdkRectangle update_rect; GdkColor fgColor; update_rect.x = x - 5; update_rect.y = y - 5; update_rect.width = RECT_WIDTH; update_rect.height = RECT_HEIGHT; gdk_color_parse(colorStrings[col_select], &fgColor); gint col_select = 0; char *szText = "Test String"; int lenText = 11; /* Draw a rectangle on the screen */ static void draw_brush( GtkWidget *widget, gdouble x, gdouble y) { GdkRectangle update_rect; GdkColor fgColor; update_rect.x = x - 5; update_rect.y = y - 5; update_rect.width = RECT_WIDTH; update_rect.height = RECT_HEIGHT; gdk_color_parse(colorStrings[col_select], &fgColor); GdkWindow* root = gdk_get_default_root_window(); GdkGC* cg = gdk_gc_new(root); PangoLayout *pLayout = gtk_widget_create_pango_layout( widget, 0); pango_layout_set_text(pLayout, szText, /* lenText */ -1); if (!gdk_colormap_alloc_color( gdk_colormap_get_system (), &fgColor, TRUE, TRUE) ) {/*ERROR: NO gdk_colormap_alloc_color*/} gdk_draw_layout_with_colors( widget->window , cg, x+2, y+2, pLayout, &fgColor /* NULL */, NULL ); g_object_unref(pLayout); gdk_draw_rectangle (pixmap, widget->style->black_gc, TRUE, update_rect.x, update_rect.y, update_rect.width, update_rect.height); gtk_widget_queue_draw_area (widget, update_rect.x, update_rect.y, update_rect.width, update_rect.height); if (col_select==MAX_COL_STRINGS) col_select = 0; else col_select++; } static gboolean button_press_event( GtkWidget *widget, GdkEventButton *event ) { if (event->button == 1 && pixmap != NULL) draw_brush (widget, event->x, event->y); return TRUE; } _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list