}
static void
+tdm_buffer_release(struct ds_tdm_buffer *buffer)
+{
+ buffer->released = true;
+ ds_buffer_unlock(buffer->buffer);
+}
+
+static void
+tdm_output_update_front_buffer(struct ds_tdm_output *output)
+{
+ if (output->front_buffer)
+ tdm_buffer_release(output->front_buffer);
+ output->front_buffer = output->back_buffer;
+ output->back_buffer = NULL;
+}
+
+static void
+tdm_output_attach_back_buffer(struct ds_tdm_output *output,
+ struct ds_tdm_buffer *buffer)
+{
+ if (output->back_buffer)
+ tdm_buffer_release(output->back_buffer);
+ output->back_buffer = buffer;
+}
+
+static void
tdm_output_hwc_commit_handler(tdm_hwc *hwc, unsigned int sequence,
unsigned int tv_sec, unsigned int tv_usec, void *user_data)
{
output = user_data;
- if (output->front_buffer) {
- output->front_buffer->released = true;
- ds_buffer_unlock(output->front_buffer->buffer);
- }
-
- output->front_buffer = output->back_buffer;
- output->back_buffer = NULL;
+ tdm_output_update_front_buffer(output);
wl_signal_emit(&output->base.events.frame, &output->base);
}
return false;
}
- if (output->back_buffer) {
- output->back_buffer->released = true;
- ds_buffer_unlock(output->back_buffer->buffer);
- }
-
- output->back_buffer = buffer;
+ tdm_output_attach_back_buffer(output, buffer);
ds_dbg("Swap Buffer!!!!!");
}