tweaks from work in mr4th codebase

main
Allen Webster 2026-03-09 15:40:20 -07:00
parent 7f26b2662a
commit 735af5c2b6
2 changed files with 18 additions and 17 deletions

View File

@ -1,10 +1,8 @@
#if 0 #if 0
libdecor_path="/home/mr4th/mr4th/libdecor"
root_path="$PWD" root_path="$PWD"
gtk_flags="$(pkg-config --cflags --libs gtk+-3.0)" gtk_flags="$(pkg-config --cflags --libs gtk+-3.0)"
dbus_flags="$(pkg-config --cflags --libs dbus-1)" 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="-Iwayland -lwayland-client -lwayland-cursor -lwayland-egl -lEGL -lm"
my_flags+=" -lwayland-client -lwayland-cursor -lwayland-egl -lEGL -lm"
mkdir -p build mkdir -p build
clang -o build/demo -g $root_path/wayland_gtk_egl.c $gtk_flags $dbus_flags $my_flags clang -o build/demo -g $root_path/wayland_gtk_egl.c $gtk_flags $dbus_flags $my_flags
exit 0 exit 0
@ -292,7 +290,7 @@ int main(){
ctx.cursor_theme = csd_desktop_get_cursor_theme(); ctx.cursor_theme = csd_desktop_get_cursor_theme();
/* setup gtk */ /* setup gtk */
csd_gtk_init(); csd_gtk_init(&ctx.gtk_ctx);
/* setup Wayland */ /* setup Wayland */
{ {
@ -322,7 +320,8 @@ int main(){
/* setup EGL */ /* 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; EGLint major = 0, minor = 0;
eglInitialize(ctx.egl_display, &major, &minor); eglInitialize(ctx.egl_display, &major, &minor);
@ -461,19 +460,19 @@ int main(){
/* window size update */ /* window size update */
csd_window_size_update(&ctx.window, &csd_frame); 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 */ /* frame update and render */
if (ctx.window.config.decoration_mode == if (ctx.window.config.decoration_mode ==
ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE){ 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{ else{
csd_gtk_disable(&ctx.window, &ctx.gtk_window); 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 */ /* app update & render */
{ {
CSD_Window *window = &ctx.window; CSD_Window *window = &ctx.window;
@ -1001,7 +1000,7 @@ csd_desktop_get_color_scheme(){
/* csd gtk implementation */ /* csd gtk implementation */
static void static void
csd_gtk_init(void){ csd_gtk_init(CSD_GTK_Ctx *gtk_ctx){
gdk_set_allowed_backends("wayland"); gdk_set_allowed_backends("wayland");
gtk_disable_setlocale(); gtk_disable_setlocale();
gtk_init_check(0, 0); gtk_init_check(0, 0);
@ -1024,7 +1023,7 @@ csd_gtk_init(void){
cairo_destroy(cr); cairo_destroy(cr);
csd_gtk_blur_surface(shadow_blur, 64); 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 #define SHADOW_MARGIN 24
static void 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){ CSD_Seat **seats, CSD_U32 seat_count){
/* setup buttons */ /* 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_t *cr = cairo_create(surface);
cairo_surface_set_device_scale(surface, 1, 1); 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,
-(int)SHADOW_MARGIN/2, -(int)SHADOW_MARGIN/2,
shadow_dim[0] + SHADOW_MARGIN, shadow_dim[0] + SHADOW_MARGIN,

View File

@ -47,7 +47,7 @@ enum{
CSD_CursorShape_COUNT CSD_CursorShape_COUNT
}; };
typedef uint32_t CSD_WindowFlags; typedef CSD_U32 CSD_WindowFlags;
enum{ enum{
CSD_WindowFlag_IsFullscreen = (1 << 0), CSD_WindowFlag_IsFullscreen = (1 << 0),
CSD_WindowFlag_IsMax = (1 << 1), CSD_WindowFlag_IsMax = (1 << 1),
@ -183,14 +183,15 @@ typedef struct CSD_GTK_Window{
/* csd gtk implementation */ /* 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 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_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, static CSD_B32 csd_gtk_calc_surface_off(CSD_GTK_Window *gtk_window,
struct wl_surface *surface, struct wl_surface *surface,
CSD_S32 *off); 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); CSD_Seat **seats, CSD_U32 seat_count);
static void csd_gtk_disable(CSD_Window *window, CSD_GTK_Window *gtk_window); static void csd_gtk_disable(CSD_Window *window, CSD_GTK_Window *gtk_window);