From 11a5d5a08a7fb543d48d1f5d7e068a42290554f6 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sat, 17 Jun 2023 22:24:36 +0200 Subject: [PATCH] fixup! Add display server. --- display/window.c | 26 ++++++++++++++++---------- display/window.h | 15 +++++++++------ 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/display/window.c b/display/window.c index 53b27a1e..e6715b40 100644 --- a/display/window.c +++ b/display/window.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, 2016, 2017, 2022 Jonas 'Sortie' Termansen. + * Copyright (c) 2014, 2015, 2016, 2017, 2022, 2023 Jonas 'Sortie' Termansen. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -191,7 +191,8 @@ void window_render_frame(struct window* window) tt_width = buttons_x - border_width; tt_width = 0 < tt_width ? tt_width : 0; } - render_text(framebuffer_crop(window->buffer, tt_pos_x, tt_pos_y, tt_width, tt_height), tt, tt_color); + render_text(framebuffer_crop(window->buffer, tt_pos_x, tt_pos_y, + tt_width, tt_height), tt, tt_color); } void window_move(struct window* window, size_t left, size_t top) @@ -215,7 +216,8 @@ void window_client_resize(struct window* window, window->buffer.xres = window->width; window->buffer.yres = window->height; window->buffer.pitch = window->width; - window->buffer.buffer = (uint32_t*) + // TODO: Check malloc. + window->buffer.buffer = malloc(sizeof(uint32_t) * window->width * window->height); for ( size_t y = 0; y < window->height; y++ ) for ( size_t x = 0; x < window->width; x++ ) @@ -307,9 +309,10 @@ void window_destroy(struct window* window) window->created = false; } -void window_on_display_resolution_change(struct window* window, struct display* display) +void window_on_display_resolution_change(struct window* window, + struct display* display) { - // TODO: Potentially move window back inside screen? + // TODO: Move window back inside screen. if ( window->window_state == WINDOW_STATE_MAXIMIZED ) { // TODO: Change size of maximized window. @@ -317,7 +320,8 @@ void window_on_display_resolution_change(struct window* window, struct display* } } -void window_tile(struct window* window, enum window_state state, size_t left, size_t top, size_t width, size_t height) +void window_tile(struct window* window, enum window_state state, size_t left, + size_t top, size_t width, size_t height) { if ( window->window_state == state ) return; @@ -337,12 +341,13 @@ void window_tile(struct window* window, enum window_state state, size_t left, si window->width = width; window->height = height; + // TODO: Share logic with window_client_resize. window->buffer.xres = window->width; window->buffer.yres = window->height; window->buffer.pitch = window->width; - window->buffer.buffer = (uint32_t*) - malloc(sizeof(uint32_t) * window->width * window->height); - memset(window->buffer.buffer, 0, sizeof(uint32_t) * window->width * window->height); + // TODO: Check malloc. + window->buffer.buffer = + calloc(1, sizeof(uint32_t) * window->width * window->height); window->window_state = state; @@ -363,7 +368,8 @@ void window_restore(struct window* window) return; window->top = window->saved_top; window->left = window->saved_left; - window_client_resize(window, window->saved_width - 2 * BORDER_WIDTH, window->saved_height - TITLE_HEIGHT - BORDER_WIDTH); + window_client_resize(window, window->saved_width - 2 * BORDER_WIDTH, + window->saved_height - TITLE_HEIGHT - BORDER_WIDTH); window_notify_client_resize(window); } diff --git a/display/window.h b/display/window.h index ade21ba2..c8dd8241 100644 --- a/display/window.h +++ b/display/window.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, 2016, 2018, 2022 Jonas 'Sortie' Termansen. + * Copyright (c) 2014, 2015, 2016, 2018, 2022, 2023 Jonas 'Sortie' Termansen. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -78,16 +78,20 @@ struct framebuffer window_client_buffer(struct window* window); void window_render_frame(struct window* window); void window_move(struct window* window, size_t left, size_t top); void window_resize(struct window* window, size_t width, size_t height); -void window_client_resize(struct window* window, size_t client_width, size_t client_height); -void window_initialize(struct window* window, struct connection* connection, struct display* display, uint32_t window_id); +void window_client_resize(struct window* window, size_t client_width, + size_t client_height); +void window_initialize(struct window* window, struct connection* connection, + struct display* display, uint32_t window_id); void window_quit(struct window* window); void window_destroy(struct window* window); void window_drag_resize(struct window* window, int ld, int td, int wd, int hd); -void window_on_display_resolution_change(struct window* window, struct display* display); +void window_on_display_resolution_change(struct window* window, + struct display* display); void window_maximize(struct window* window); void window_restore(struct window* window); void window_toggle_maximized(struct window* window); -void window_tile(struct window* window, enum window_state state, size_t left, size_t top, size_t width, size_t height); +void window_tile(struct window* window, enum window_state state, size_t left, + size_t top, size_t width, size_t height); void window_tile_leftward(struct window* window); void window_tile_rightward(struct window* window); void window_tile_up(struct window* window); @@ -101,7 +105,6 @@ void window_tile_bottom(struct window* window); void window_tile_bottom_left(struct window* window); void window_tile_bottom_right(struct window* window); void window_notify_client_resize(struct window* window); - size_t window_border_width(const struct window* window); #endif