cairo_set_source_rgba() and gdk_color_parse() Fail in debian lenny
cairo_set_source_rgba() and gdk_color_parse() work ok in ubuntu 10.04 (gtk2.20...). Fail and crash in debian lenny (gtk2.12....) althougth compiling ok.
Some of my code:
...
gdk_color_parse("white",color);
...
Set_transparent(window);
...
static gboolean on_window_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
cairo_t *cr;
cr = gdk_cairo_create(widget->window); // create cairo context
if(alpha_channel_support) // set source to RGB-Alpha
cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 0.0);
else
cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); // set color RGB
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); // set drawing compositing operator
// SOURCE -> replace destination
cairo_paint(cr); // paint source
cairo_destroy(cr);
return FALSE;
}
void Set_transparent(GtkWidget *w)
{
GdkScreen *screen;
GdkColormap *colormap;
gtk_window_set_keep_above(GTK_WINDOW(w),TRUE);
gtk_window_set_decorated(GTK_WINDOW(w),FALSE);
g_signal_connect(G_OBJECT(w), "expose-event", G_CALLBACK(on_window_expose_event), NULL);
gtk_widget_set_app_paintable(w, TRUE); // allow application to paint on widget
screen = gtk_widget_get_screen(w);
colormap = gdk_screen_get_rgba_colormap(screen); // get colormap with alpha channel
if(colormap != NULL)
alpha_channel_support = TRUE;
else
{
alpha_channel_support = FALSE;
colormap = gdk_screen_get_rgb_colormap(screen);
g_message("Screen supports no alpha channels\n");
}
gtk_widget_set_colormap(w, colormap);
}
How showld it be in debia to work?
Thanks all
|