opensuse Leap 15.6 KDE Wayland - Programmierung

#7997873
Lesenswert?

Josef G. schrieb:

Hat jemand eine Idee für Abhilfe?

Irgendwo geht die Information zu Wayland verloren.

Teste "echo $WAYLAND_DISPLAY" an der Konsole. Wenn das nix ausgibt, hast du an der Stelle kein Wayland.

Ansonsten enthält "$WAYLAND_DISPLAY" den Namen eines Sockets im "$XDG_RUNTIME_DIR" (also z.B. /run/user/1000/wayland-0). Diese Datei muss für dein Programm auch erreichbar und benutzbar sein.

Wenn diese Environment-Variablen nicht gesetzt sind, könntest du den Pfad zum Socket auch als Parameter zu wl_display_connect angeben, ist aber meist eine schlechte Idee.

Environment-Variablen vererben sich nicht (automatisch) durch sudo, su, docker-container usw.

OP Persönliche Seite #7997976
Lesenswert?

Εrnst B. schrieb:

Teste "echo $WAYLAND_DISPLAY" an der Konsole. Wenn das nix ausgibt, hast du an der Stelle kein Wayland.

Hat nichts ausgegeben, obwohl ich bei der Anmeldung (erstmals) Wayland ausgewählt hatte. Habe mich jetzt nochmal abgemeldet und wieder angemeldet. Jetzt klappt es. "echo $WAYLAND_DISPLAY" liefert jetzt "wayland-0" und das Programm "Connection established!".

Allerdings wird jetzt immer wieder mal der Bildschirm etwa eine Sekunde lang schwarz. Aber erst mal Danke. Werde vermutlich noch weitere Fragen haben.

OP Persönliche Seite #7999418
Lesenswert?

Habe den Code etwas umgeschrieben und erweitert:

1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <wayland-client.h>
4
#include <wayland-egl.h>
5

6
int main(){ struct wl_display *display;
7
            struct wl_surface *surface;
8
            struct wl_egl_window *egl_window;
9

10
    display = wl_display_connect(NULL);
11
    if (!display) { printf("Failed\n"); return(0);}
12

13
    egl_window = wl_egl_window_create(surface,480,360);
14
    wl_egl_window_destroy(egl_window);
15

16
    wl_display_disconnect(display);
17
    return(0);}

Versuch zu Compilieren mittels

1
gcc -o wltest wltest.c -lwayland-client

liefert die Fehlermeldungen

undefined reference to wl_egl_window_create' undefined reference to wl_egl_window_destroy'

Weiss jemand warum? Was fehlt in der #include-Liste?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren