Fix window creation
This commit is contained in:
parent
42f33c1b0e
commit
9d530777bc
4 changed files with 2530 additions and 8 deletions
23
wayland.c
23
wayland.c
|
|
@ -5,12 +5,19 @@
|
|||
#include <GL/gl.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
// Generated header using wayland-scanner
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
|
||||
struct wl_compositor *compositor = NULL;
|
||||
struct wl_registry *registry = NULL;
|
||||
struct wl_surface *surface = NULL;
|
||||
struct xdg_wm_base *wm_base;
|
||||
struct xdg_surface *xdg_surface;
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
EGLBoolean errcode = 0;
|
||||
|
||||
|
||||
|
||||
void registry_handle_global(void *data, struct wl_registry *registry,
|
||||
uint32_t name, const char *interface, uint32_t version)
|
||||
{
|
||||
|
|
@ -21,6 +28,11 @@ void registry_handle_global(void *data, struct wl_registry *registry,
|
|||
fprintf(stdout, "Registering compositor...\n");
|
||||
compositor = wl_registry_bind(registry, name, &wl_compositor_interface, 1);
|
||||
}
|
||||
if (!strcmp(interface, xdg_wm_base_interface.name))
|
||||
{
|
||||
fprintf(stdout, "Registering XDG WM base interface...\n");
|
||||
wm_base = wl_registry_bind(registry, name, &xdg_wm_base_interface, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -63,6 +75,10 @@ int main()
|
|||
fprintf(stderr, "Can't create surface!\n");
|
||||
}
|
||||
|
||||
xdg_surface = xdg_wm_base_get_xdg_surface(wm_base, surface);
|
||||
xdg_toplevel = xdg_surface_get_toplevel(xdg_surface);
|
||||
xdg_toplevel_set_title(xdg_toplevel, "Hi");
|
||||
|
||||
/* WL EGL initialization */
|
||||
struct wl_egl_window *window = wl_egl_window_create(surface, 480, 460);
|
||||
|
||||
|
|
@ -247,23 +263,20 @@ int main()
|
|||
break;
|
||||
}
|
||||
|
||||
struct wl_region *region = wl_compositor_create_region(compositor);
|
||||
wl_region_add(region, 0, 0, 480, 360);
|
||||
wl_surface_set_opaque_region(surface, region);
|
||||
|
||||
/* NOTE: It would seem that having a non-zero swap interval can hang the Mesa driver forever, according to this SDL GH issue:
|
||||
https://github.com/libsdl-org/SDL/issues/4335#issuecomment-829789881
|
||||
*/
|
||||
if (eglSwapInterval(egl_display, 0) != EGL_TRUE)
|
||||
fprintf(stderr, "Could not set EGL swap interval\n");
|
||||
|
||||
wl_surface_commit(surface);
|
||||
int framecount = 0;
|
||||
|
||||
// Main event loop
|
||||
while (1)
|
||||
{
|
||||
wl_display_dispatch_pending(display);
|
||||
fprintf(stdout, "Frame %d\n", framecount++);
|
||||
//fprintf(stdout, "Frame %d\n", framecount++);
|
||||
glClearColor(0.5, 0.3, 0.0, 1.0);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
glFlush();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue