mirror of
https://github.com/BoredDevNL/BoredOS.git
synced 2026-05-15 10:48:38 +00:00
fix wm freeze explorer
This commit is contained in:
parent
31eb7afdc6
commit
92928e55fb
4 changed files with 11 additions and 5 deletions
BIN
src/images/gif/badapple.gif
Normal file
BIN
src/images/gif/badapple.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.7 MiB |
|
|
@ -1890,8 +1890,8 @@ Window* explorer_create_window(const char *path) {
|
||||||
else explorer_load_directory(win, path);
|
else explorer_load_directory(win, path);
|
||||||
|
|
||||||
explorer_wins[explorer_win_count++] = win;
|
explorer_wins[explorer_win_count++] = win;
|
||||||
wm_add_window(win);
|
wm_add_window_locked(win);
|
||||||
wm_bring_to_front(win);
|
// wm_add_window_locked already calls wm_bring_to_front_locked!
|
||||||
|
|
||||||
return win;
|
return win;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
src/wm/wm.c
10
src/wm/wm.c
|
|
@ -1566,13 +1566,17 @@ void wm_bring_to_front(Window *win) {
|
||||||
wm_lock_release(rflags);
|
wm_lock_release(rflags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wm_add_window(Window *win) {
|
void wm_add_window_locked(Window *win) {
|
||||||
uint64_t rflags;
|
|
||||||
rflags = wm_lock_acquire();
|
|
||||||
if (window_count < 32) {
|
if (window_count < 32) {
|
||||||
all_windows[window_count++] = win;
|
all_windows[window_count++] = win;
|
||||||
wm_bring_to_front_locked(win); // Ensure newly added windows are on top
|
wm_bring_to_front_locked(win); // Ensure newly added windows are on top
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wm_add_window(Window *win) {
|
||||||
|
uint64_t rflags;
|
||||||
|
rflags = wm_lock_acquire();
|
||||||
|
wm_add_window_locked(win);
|
||||||
wm_lock_release(rflags);
|
wm_lock_release(rflags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,10 @@ void wm_handle_click(int x, int y);
|
||||||
void wm_handle_right_click(int x, int y);
|
void wm_handle_right_click(int x, int y);
|
||||||
void wm_process_input(void);
|
void wm_process_input(void);
|
||||||
void wm_process_deferred_thumbs(void);
|
void wm_process_deferred_thumbs(void);
|
||||||
|
void wm_add_window_locked(Window *win);
|
||||||
void wm_add_window(Window *win);
|
void wm_add_window(Window *win);
|
||||||
void wm_remove_window(Window *win);
|
void wm_remove_window(Window *win);
|
||||||
|
void wm_bring_to_front_locked(Window *win);
|
||||||
void wm_bring_to_front(Window *win);
|
void wm_bring_to_front(Window *win);
|
||||||
Window* wm_find_window_by_title(const char *title);
|
Window* wm_find_window_by_title(const char *title);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue