gdk_screen_get_default() == NULL
-
Hi,
ich versuche gerade, einzelne Pixel des Bildschirms in eine GdkPixbuf zu lesen. Ich scheitere jedoch schon dabei, das Root-Window irgendwie zu packen zu kriegen:
Dieses Programm:#include <stdio.h> /* Standard input/output definitions */ #include <string.h> /* String function definitions */ #include <stdlib.h> #include <unistd.h> /* UNIX standard function definitions */ #include <fcntl.h> /* File control definitions */ #include <errno.h> /* Error number definitions */ #include <termios.h> /* POSIX terminal control definitions */ #include <gtk/gtk.h> #include <gdk/gdk.h> #include <gdk-pixbuf/gdk-pixbuf.h> int main() { g_type_init(); gtk_init(NULL, NULL); if( gdk_screen_get_default() == NULL) { printf ("gdk_screen_get_default() == NULL\n"); } if( gdk_display_get_default() == NULL) { printf ("gdk_display_get_default() == NULL\n"); } GdkWindow *window = gdk_get_default_root_window(); // GdkPixbuf *pixbuf = gdk_pixbuf_get_from_drawable(NULL, GDK_DRAWABLE(window), NULL, 100, 100, 0, 0, 1, 1);; return 0; }
erzeugt diesen Output:
gdk_screen_get_default() == NULL gdk_display_get_default() == NULL (process:19039): Gdk-CRITICAL **: gdk_screen_get_root_window: assertion `GDK_IS_SCREEN (screen)' failed
Er sucht, wenn ich das richtig verstanden habe, das default-root-window im default-screen, und diesen default-screen im default-display. Display und Screen sind NULL, laut Dokumentation gibt es also keine Defaults.
Wie kann ich mir denn mein Root-Window packen? Oder mache ich etwas bei der GTK-Initialisierung falsch? Ich benutze Ubuntu Linux 8.10, mit Gnome 2.24.1 . Die Enviroment-Variable $DISPLAY ist auf ":0.0".
Danke,
Lorenz
-
Hi,
bei mir (Debian, GTK+ 2.12.11-4) läuft das sauber durch, d.h. er findet sowohl screen als auch display. Auf welcher Plattform führst du das aus?
Cheers
GPC
-
Danke fürs probieren, ich habs grade auch hinbekommen. meine gdk-version war wohl gründlich zerschossen, ich habe sie jetzt selbst kompiliert.
lorenz