Merge pull request #1283 from swaywm/revert-1282-fix-idle-frame

Revert "Prevent excessive frame events when compositor doesn't swap buffers"
This commit is contained in:
Drew DeVault 2018-10-05 13:56:42 +02:00 committed by GitHub
commit 4e89a21397
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 6 deletions

View File

@ -472,6 +472,10 @@ bool wlr_output_swap_buffers(struct wlr_output *output, struct timespec *when,
wlr_log(WLR_ERROR, "Tried to swap buffers when a frame is pending"); wlr_log(WLR_ERROR, "Tried to swap buffers when a frame is pending");
return false; return false;
} }
if (output->idle_frame != NULL) {
wl_event_source_remove(output->idle_frame);
output->idle_frame = NULL;
}
int width, height; int width, height;
wlr_output_transformed_resolution(output, &width, &height); wlr_output_transformed_resolution(output, &width, &height);
@ -525,6 +529,7 @@ bool wlr_output_swap_buffers(struct wlr_output *output, struct timespec *when,
return false; return false;
} }
output->frame_pending = true;
output->needs_swap = false; output->needs_swap = false;
pixman_region32_clear(&output->damage); pixman_region32_clear(&output->damage);
@ -535,12 +540,6 @@ bool wlr_output_swap_buffers(struct wlr_output *output, struct timespec *when,
void wlr_output_send_frame(struct wlr_output *output) { void wlr_output_send_frame(struct wlr_output *output) {
output->frame_pending = false; output->frame_pending = false;
wlr_signal_emit_safe(&output->events.frame, output); wlr_signal_emit_safe(&output->events.frame, output);
output->frame_pending = true;
if (output->idle_frame != NULL) {
wl_event_source_remove(output->idle_frame);
output->idle_frame = NULL;
}
} }
static void schedule_frame_handle_idle_timer(void *data) { static void schedule_frame_handle_idle_timer(void *data) {