fixup! Add display server.

This commit is contained in:
Jonas 'Sortie' Termansen 2023-06-17 22:24:36 +02:00
parent 28e7a0f4df
commit 11a5d5a08a
2 changed files with 25 additions and 16 deletions

View File

@ -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 * Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * 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 = buttons_x - border_width;
tt_width = 0 < tt_width ? tt_width : 0; 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) 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.xres = window->width;
window->buffer.yres = window->height; window->buffer.yres = window->height;
window->buffer.pitch = window->width; window->buffer.pitch = window->width;
window->buffer.buffer = (uint32_t*) // TODO: Check malloc.
window->buffer.buffer =
malloc(sizeof(uint32_t) * window->width * window->height); malloc(sizeof(uint32_t) * window->width * window->height);
for ( size_t y = 0; y < window->height; y++ ) for ( size_t y = 0; y < window->height; y++ )
for ( size_t x = 0; x < window->width; x++ ) for ( size_t x = 0; x < window->width; x++ )
@ -307,9 +309,10 @@ void window_destroy(struct window* window)
window->created = false; 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 ) if ( window->window_state == WINDOW_STATE_MAXIMIZED )
{ {
// TODO: Change size of maximized window. // 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 ) if ( window->window_state == state )
return; return;
@ -337,12 +341,13 @@ void window_tile(struct window* window, enum window_state state, size_t left, si
window->width = width; window->width = width;
window->height = height; window->height = height;
// TODO: Share logic with window_client_resize.
window->buffer.xres = window->width; window->buffer.xres = window->width;
window->buffer.yres = window->height; window->buffer.yres = window->height;
window->buffer.pitch = window->width; window->buffer.pitch = window->width;
window->buffer.buffer = (uint32_t*) // TODO: Check malloc.
malloc(sizeof(uint32_t) * window->width * window->height); window->buffer.buffer =
memset(window->buffer.buffer, 0, sizeof(uint32_t) * window->width * window->height); calloc(1, sizeof(uint32_t) * window->width * window->height);
window->window_state = state; window->window_state = state;
@ -363,7 +368,8 @@ void window_restore(struct window* window)
return; return;
window->top = window->saved_top; window->top = window->saved_top;
window->left = window->saved_left; 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); window_notify_client_resize(window);
} }

View File

@ -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 * Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * 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_render_frame(struct window* window);
void window_move(struct window* window, size_t left, size_t top); 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_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_client_resize(struct window* window, size_t client_width,
void window_initialize(struct window* window, struct connection* connection, struct display* display, uint32_t window_id); 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_quit(struct window* window);
void window_destroy(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_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_maximize(struct window* window);
void window_restore(struct window* window); void window_restore(struct window* window);
void window_toggle_maximized(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_leftward(struct window* window);
void window_tile_rightward(struct window* window); void window_tile_rightward(struct window* window);
void window_tile_up(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_left(struct window* window);
void window_tile_bottom_right(struct window* window); void window_tile_bottom_right(struct window* window);
void window_notify_client_resize(struct window* window); void window_notify_client_resize(struct window* window);
size_t window_border_width(const struct window* window); size_t window_border_width(const struct window* window);
#endif #endif