LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   cairo_set_source_rgba() and gdk_color_parse() Fail in debian lenny (https://www.linuxquestions.org/questions/linux-newbie-8/cairo_set_source_rgba-and-gdk_color_parse-fail-in-debian-lenny-838387/)

cascais 10-15-2010 04:43 PM

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


All times are GMT -5. The time now is 12:30 PM.