diff --git a/wayland_gtk_egl.c b/wayland_gtk_egl.c index 2490835..97932ee 100755 --- a/wayland_gtk_egl.c +++ b/wayland_gtk_egl.c @@ -1,10 +1,8 @@ #if 0 -libdecor_path="/home/mr4th/mr4th/libdecor" root_path="$PWD" gtk_flags="$(pkg-config --cflags --libs gtk+-3.0)" dbus_flags="$(pkg-config --cflags --libs dbus-1)" -my_flags="-Iwayland -I$libdecor_path/src -I$libdecor_path/src/plugins -I$libdecor_path/build" -my_flags+=" -lwayland-client -lwayland-cursor -lwayland-egl -lEGL -lm" +my_flags="-Iwayland -lwayland-client -lwayland-cursor -lwayland-egl -lEGL -lm" mkdir -p build clang -o build/demo -g $root_path/wayland_gtk_egl.c $gtk_flags $dbus_flags $my_flags exit 0 @@ -292,7 +290,7 @@ int main(){ ctx.cursor_theme = csd_desktop_get_cursor_theme(); /* setup gtk */ - csd_gtk_init(); + csd_gtk_init(&ctx.gtk_ctx); /* setup Wayland */ { @@ -322,7 +320,8 @@ int main(){ /* setup EGL */ { - ctx.egl_display = eglGetDisplay(ctx.wl_display); + ctx.egl_display = + eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_KHR, ctx.wl_display, 0); EGLint major = 0, minor = 0; eglInitialize(ctx.egl_display, &major, &minor); @@ -461,19 +460,19 @@ int main(){ /* window size update */ csd_window_size_update(&ctx.window, &csd_frame); - /* egl size update */ - wl_egl_window_resize(ctx.main_wl_egl_window, - ctx.window.dim[0], ctx.window.dim[1], 0, 0); - /* frame update and render */ if (ctx.window.config.decoration_mode == ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE){ - csd_gtk_update_and_render(&ctx.window, &ctx.gtk_window, seats, seat_count); + csd_gtk_update_and_render(&ctx.gtk_ctx, &ctx.window, &ctx.gtk_window, seats, seat_count); } else{ csd_gtk_disable(&ctx.window, &ctx.gtk_window); } + /* egl size update */ + wl_egl_window_resize(ctx.main_wl_egl_window, + ctx.window.dim[0], ctx.window.dim[1], 0, 0); + /* app update & render */ { CSD_Window *window = &ctx.window; @@ -1001,7 +1000,7 @@ csd_desktop_get_color_scheme(){ /* csd gtk implementation */ static void -csd_gtk_init(void){ +csd_gtk_init(CSD_GTK_Ctx *gtk_ctx){ gdk_set_allowed_backends("wayland"); gtk_disable_setlocale(); gtk_init_check(0, 0); @@ -1024,7 +1023,7 @@ csd_gtk_init(void){ cairo_destroy(cr); csd_gtk_blur_surface(shadow_blur, 64); - ctx.gtk_ctx.shadow_blur = shadow_blur; + gtk_ctx->shadow_blur = shadow_blur; } } @@ -1116,7 +1115,8 @@ csd_gtk__widget_from_name(GtkWidget *root, char *name){ #define SHADOW_MARGIN 24 static void -csd_gtk_update_and_render(CSD_Window *window, CSD_GTK_Window *gtk_window, +csd_gtk_update_and_render(CSD_GTK_Ctx *gtk_ctx, + CSD_Window *window, CSD_GTK_Window *gtk_window, CSD_Seat **seats, CSD_U32 seat_count){ /* setup buttons */ @@ -1191,7 +1191,7 @@ csd_gtk_update_and_render(CSD_Window *window, CSD_GTK_Window *gtk_window, cairo_t *cr = cairo_create(surface); cairo_surface_set_device_scale(surface, 1, 1); - csd_gtk_render_shadow(cr, ctx.gtk_ctx.shadow_blur, + csd_gtk_render_shadow(cr, gtk_ctx->shadow_blur, -(int)SHADOW_MARGIN/2, -(int)SHADOW_MARGIN/2, shadow_dim[0] + SHADOW_MARGIN, diff --git a/wayland_gtk_egl.h b/wayland_gtk_egl.h index b777b95..b0afb57 100644 --- a/wayland_gtk_egl.h +++ b/wayland_gtk_egl.h @@ -47,7 +47,7 @@ enum{ CSD_CursorShape_COUNT }; -typedef uint32_t CSD_WindowFlags; +typedef CSD_U32 CSD_WindowFlags; enum{ CSD_WindowFlag_IsFullscreen = (1 << 0), CSD_WindowFlag_IsMax = (1 << 1), @@ -183,14 +183,15 @@ typedef struct CSD_GTK_Window{ /* csd gtk implementation */ -static void csd_gtk_init(void); +static void csd_gtk_init(CSD_GTK_Ctx *gtk_ctx); static void csd_gtk_window_init(CSD_GTK_Window *gtk_window); static CSD_Frame csd_gtk_calc_frame(CSD_Window *window, CSD_GTK_Window *gtk_window); static CSD_B32 csd_gtk_calc_surface_off(CSD_GTK_Window *gtk_window, struct wl_surface *surface, CSD_S32 *off); -static void csd_gtk_update_and_render(CSD_Window *window, CSD_GTK_Window *gtk_window, +static void csd_gtk_update_and_render(CSD_GTK_Ctx *gtk_ctx, + CSD_Window *window, CSD_GTK_Window *gtk_window, CSD_Seat **seats, CSD_U32 seat_count); static void csd_gtk_disable(CSD_Window *window, CSD_GTK_Window *gtk_window);