Revert "compositor: Add internal support to track idle inhibition requests"
This reverts commit f8300c87d5.
(Accidental landing)
This commit is contained in:
+6
-50
@@ -485,8 +485,6 @@ weston_surface_create(struct weston_compositor *compositor)
|
|||||||
|
|
||||||
wl_list_init(&surface->pointer_constraints);
|
wl_list_init(&surface->pointer_constraints);
|
||||||
|
|
||||||
surface->inhibit_idling = false;
|
|
||||||
|
|
||||||
return surface;
|
return surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2322,42 +2320,15 @@ weston_output_schedule_repaint_reset(struct weston_output *output)
|
|||||||
TL_POINT("core_repaint_exit_loop", TLP_OUTPUT(output), TLP_END);
|
TL_POINT("core_repaint_exit_loop", TLP_OUTPUT(output), TLP_END);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Retrieves a mask of outputs that should inhibit screensaving
|
|
||||||
*
|
|
||||||
* \param compositor The compositor instance.
|
|
||||||
* \return An output mask indicating the ids of all inhibiting outputs
|
|
||||||
*
|
|
||||||
* Checks for surfaces whose clients have requested that they
|
|
||||||
* disable the screenserver and display powersaving. Note
|
|
||||||
* the output ids for these surfaces.
|
|
||||||
*/
|
|
||||||
WL_EXPORT uint32_t
|
|
||||||
weston_compositor_inhibited_outputs(struct weston_compositor *compositor)
|
|
||||||
{
|
|
||||||
struct weston_view *view;
|
|
||||||
uint32_t inhibited_outputs_mask = 0;
|
|
||||||
|
|
||||||
wl_list_for_each(view, &compositor->view_list, link) {
|
|
||||||
/* Does the view's surface inhibit this output? */
|
|
||||||
if (!view->surface->inhibit_idling)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
inhibited_outputs_mask |= view->output_mask;
|
|
||||||
}
|
|
||||||
return inhibited_outputs_mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
output_repaint_timer_handler(void *data)
|
output_repaint_timer_handler(void *data)
|
||||||
{
|
{
|
||||||
struct weston_output *output = data;
|
struct weston_output *output = data;
|
||||||
struct weston_compositor *compositor = output->compositor;
|
struct weston_compositor *compositor = output->compositor;
|
||||||
uint32_t inhibited_outputs_mask = weston_compositor_inhibited_outputs(compositor);
|
|
||||||
|
|
||||||
if (output->repaint_needed &&
|
if (output->repaint_needed &&
|
||||||
|
compositor->state != WESTON_COMPOSITOR_SLEEPING &&
|
||||||
compositor->state != WESTON_COMPOSITOR_OFFSCREEN &&
|
compositor->state != WESTON_COMPOSITOR_OFFSCREEN &&
|
||||||
(compositor->state != WESTON_COMPOSITOR_SLEEPING
|
|
||||||
|| inhibited_outputs_mask & (1 << output->id)) &&
|
|
||||||
weston_output_repaint(output) == 0)
|
weston_output_repaint(output) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -2479,15 +2450,9 @@ weston_output_schedule_repaint(struct weston_output *output)
|
|||||||
{
|
{
|
||||||
struct weston_compositor *compositor = output->compositor;
|
struct weston_compositor *compositor = output->compositor;
|
||||||
struct wl_event_loop *loop;
|
struct wl_event_loop *loop;
|
||||||
uint32_t inhibited_outputs_mask = weston_compositor_inhibited_outputs(compositor);
|
|
||||||
|
|
||||||
/* If we're offscreen, or if we're sleeping and the monitor
|
if (compositor->state == WESTON_COMPOSITOR_SLEEPING ||
|
||||||
* isn't currently being inhibited by an active surface, then
|
compositor->state == WESTON_COMPOSITOR_OFFSCREEN)
|
||||||
* skip repainting.
|
|
||||||
*/
|
|
||||||
if (compositor->state == WESTON_COMPOSITOR_OFFSCREEN ||
|
|
||||||
(compositor->state == WESTON_COMPOSITOR_SLEEPING &&
|
|
||||||
!(inhibited_outputs_mask & (1 << output->id))))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!output->repaint_needed)
|
if (!output->repaint_needed)
|
||||||
@@ -3937,19 +3902,10 @@ weston_compositor_dpms(struct weston_compositor *compositor,
|
|||||||
enum dpms_enum state)
|
enum dpms_enum state)
|
||||||
{
|
{
|
||||||
struct weston_output *output;
|
struct weston_output *output;
|
||||||
uint32_t inhibited_outputs_mask = weston_compositor_inhibited_outputs(compositor);
|
|
||||||
|
|
||||||
wl_list_for_each(output, &compositor->output_list, link) {
|
wl_list_for_each(output, &compositor->output_list, link)
|
||||||
if (!output->set_dpms)
|
if (output->set_dpms)
|
||||||
continue;
|
output->set_dpms(output, state);
|
||||||
|
|
||||||
/* If output is idle-inhibited, don't toggle to any DPMS state except ON. */
|
|
||||||
if (state != WESTON_DPMS_ON &&
|
|
||||||
inhibited_outputs_mask & (1 << output->id))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
output->set_dpms(output, state);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Restores the compositor to active status
|
/** Restores the compositor to active status
|
||||||
|
|||||||
@@ -1155,14 +1155,6 @@ struct weston_surface {
|
|||||||
|
|
||||||
/* An list of per seat pointer constraints. */
|
/* An list of per seat pointer constraints. */
|
||||||
struct wl_list pointer_constraints;
|
struct wl_list pointer_constraints;
|
||||||
|
|
||||||
/*
|
|
||||||
* Indicates the surface prefers no screenblanking, screensaving,
|
|
||||||
* or other automatic obscurement to kick in while the surface is
|
|
||||||
* considered "active" by the shell.
|
|
||||||
*/
|
|
||||||
bool inhibit_idling;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct weston_subsurface {
|
struct weston_subsurface {
|
||||||
@@ -1339,8 +1331,6 @@ void
|
|||||||
weston_output_schedule_repaint(struct weston_output *output);
|
weston_output_schedule_repaint(struct weston_output *output);
|
||||||
void
|
void
|
||||||
weston_output_damage(struct weston_output *output);
|
weston_output_damage(struct weston_output *output);
|
||||||
uint32_t
|
|
||||||
weston_compositor_inhibited_outputs(struct weston_compositor *compositor);
|
|
||||||
void
|
void
|
||||||
weston_compositor_schedule_repaint(struct weston_compositor *compositor);
|
weston_compositor_schedule_repaint(struct weston_compositor *compositor);
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user