void *data);
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
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);
+}
// SPDX-License-Identifier: GPL-2.0-only
/* view-impl-common.c: common code for shell view->impl functions */
#include "view-impl-common.h"
-#include "config/rcxml.h"
#include "foreign-toplevel/foreign.h"
#include "labwc.h"
#include "output.h"
-#include "output-state.h"
#include "view.h"
#include "window-rules.h"
* views. It should probably be combined with the existing
* logic in desktop_update_top_layer_visibility().
*/
- if (view->fullscreen && rc.adaptive_sync == LAB_ADAPTIVE_SYNC_FULLSCREEN
- && output_is_usable(view->output)) {
- output_enable_adaptive_sync(view->output, false);
- output_state_commit(view->output);
+ if (view->fullscreen) {
+ output_set_has_fullscreen_view(view->output, false);
}
}
#include "menu/menu.h"
#include "osd.h"
#include "output.h"
-#include "output-state.h"
#include "placement.h"
#include "regions.h"
#include "resize-indicator.h"
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
view_set_activated(struct view *view, bool activated)
{
keyboard_update_layout(&view->server->seat, view->keyboard_layout);
}
}
- set_adaptive_sync_fullscreen(view);
+ output_set_has_fullscreen_view(view->output, view->fullscreen);
}
void
} else {
view_apply_special_geometry(view);
}
- set_adaptive_sync_fullscreen(view);
+ output_set_has_fullscreen_view(view->output, view->fullscreen);
}
static bool