int main(int argc, char **argv) { get_server_references(); surface = wl_compositor_create_surface(compositor); if (surface == NULL) { fprintf(stderr, "Can't create surface\n"); exit(1); } else { fprintf(stderr, "Created surface\n"); } shell_surface = wl_shell_get_shell_surface(shell, surface); wl_shell_surface_set_toplevel(shell_surface); // create_opaque_region(); init_egl(); create_window(); init_gl(); while (1) { draw(); if (eglSwapBuffers(egl_display, egl_surface)) { fprintf(stderr, "Swapped buffers\n"); } else { fprintf(stderr, "Swapped buffers failed\n"); } } wl_display_disconnect(display); printf("disconnected from display\n"); exit(0); }
EGLNativeWindowType createSubWindow(FBNativeWindowType p_window, EGLNativeDisplayType display, int x, int y,int width, int height) { /* krnlyng */ printf("creating sub window\n"); #ifndef X11 if(get_server_references(display) < 0) return NULL; surface = wl_compositor_create_surface(compositor); if(surface == NULL) { fprintf(stderr, "Cannot create wl surface\n"); return NULL; } shell_surface = wl_shell_get_shell_surface(shell, surface); wl_shell_surface_set_toplevel(shell_surface); create_opaque_region(width, height); EGLNativeWindowType win = wl_egl_window_create(surface, width, height); if(win == EGL_NO_SURFACE || win == NULL) { fprintf(stderr, "wl_egl_window_create failed\n"); } printf("created sub window\n"); return win; #else XSetWindowAttributes wa; wa.event_mask = StructureNotifyMask; Window win = XCreateWindow(display,p_window,x,y, width,height,0,CopyFromParent,CopyFromParent,CopyFromParent,CWEventMask,&wa); XMapWindow(display,win); XEvent e; XIfEvent(display, &e, WaitForMapNotify, (char *)win); return win; #endif }