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
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,

View File

@ -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);