tweaks from work in mr4th codebase
parent
7f26b2662a
commit
735af5c2b6
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue