output: factor out output_set_has_fullscreen_view()

This commit is contained in:
John Lindgren 2025-11-08 09:40:26 -05:00 committed by Consolatis
parent 6de18b9afd
commit 87da3f6588
4 changed files with 25 additions and 23 deletions

View file

@ -69,4 +69,13 @@ void handle_output_power_manager_set_mode(struct wl_listener *listener,
void *data); void *data);
void output_enable_adaptive_sync(struct output *output, bool enabled); void output_enable_adaptive_sync(struct output *output, bool enabled);
/**
* Notifies whether a fullscreen view is displayed on the given output.
* Depending on user config, this may enable/disable adaptive sync.
*
* Does nothing if output is NULL or disabled.
*/
void output_set_has_fullscreen_view(struct output *output,
bool has_fullscreen_view);
#endif // LABWC_OUTPUT_H #endif // LABWC_OUTPUT_H

View file

@ -1144,3 +1144,15 @@ output_enable_adaptive_sync(struct output *output, bool enabled)
enabled ? "en" : "dis", output->wlr_output->name); enabled ? "en" : "dis", output->wlr_output->name);
} }
} }
void
output_set_has_fullscreen_view(struct output *output, bool has_fullscreen_view)
{
if (rc.adaptive_sync != LAB_ADAPTIVE_SYNC_FULLSCREEN
|| !output_is_usable(output)) {
return;
}
/* Enable adaptive sync if view is fullscreen */
output_enable_adaptive_sync(output, has_fullscreen_view);
output_state_commit(output);
}

View file

@ -1,11 +1,9 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* view-impl-common.c: common code for shell view->impl functions */ /* view-impl-common.c: common code for shell view->impl functions */
#include "view-impl-common.h" #include "view-impl-common.h"
#include "config/rcxml.h"
#include "foreign-toplevel/foreign.h" #include "foreign-toplevel/foreign.h"
#include "labwc.h" #include "labwc.h"
#include "output.h" #include "output.h"
#include "output-state.h"
#include "view.h" #include "view.h"
#include "window-rules.h" #include "window-rules.h"
@ -65,10 +63,8 @@ view_impl_unmap(struct view *view)
* views. It should probably be combined with the existing * views. It should probably be combined with the existing
* logic in desktop_update_top_layer_visibility(). * logic in desktop_update_top_layer_visibility().
*/ */
if (view->fullscreen && rc.adaptive_sync == LAB_ADAPTIVE_SYNC_FULLSCREEN if (view->fullscreen) {
&& output_is_usable(view->output)) { output_set_has_fullscreen_view(view->output, false);
output_enable_adaptive_sync(view->output, false);
output_state_commit(view->output);
} }
} }

View file

@ -21,7 +21,6 @@
#include "menu/menu.h" #include "menu/menu.h"
#include "osd.h" #include "osd.h"
#include "output.h" #include "output.h"
#include "output-state.h"
#include "placement.h" #include "placement.h"
#include "regions.h" #include "regions.h"
#include "resize-indicator.h" #include "resize-indicator.h"
@ -513,20 +512,6 @@ view_discover_output(struct view *view, struct wlr_box *geometry)
return false; return false;
} }
static void
set_adaptive_sync_fullscreen(struct view *view)
{
if (!output_is_usable(view->output)) {
return;
}
if (rc.adaptive_sync != LAB_ADAPTIVE_SYNC_FULLSCREEN) {
return;
}
/* Enable adaptive sync if view is fullscreen */
output_enable_adaptive_sync(view->output, view->fullscreen);
output_state_commit(view->output);
}
void void
view_set_activated(struct view *view, bool activated) view_set_activated(struct view *view, bool activated)
{ {
@ -548,7 +533,7 @@ view_set_activated(struct view *view, bool activated)
keyboard_update_layout(&view->server->seat, view->keyboard_layout); keyboard_update_layout(&view->server->seat, view->keyboard_layout);
} }
} }
set_adaptive_sync_fullscreen(view); output_set_has_fullscreen_view(view->output, view->fullscreen);
} }
void void
@ -1786,7 +1771,7 @@ view_set_fullscreen(struct view *view, bool fullscreen)
} else { } else {
view_apply_special_geometry(view); view_apply_special_geometry(view);
} }
set_adaptive_sync_fullscreen(view); output_set_has_fullscreen_view(view->output, view->fullscreen);
} }
static bool static bool