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


Anmelden zum Antworten