···517517 IPC_TRACE_MARKER();
518518 struct ipc_client_compositor *icc = ipc_client_compositor(xc);
519519520520+ int64_t frame_id = -1;
520521 uint64_t wake_up_time_ns = 0;
522522+ uint64_t predicted_display_time = 0;
523523+ uint64_t predicted_display_period = 0;
521524522522- IPC_CALL_CHK(ipc_call_compositor_predict_frame(icc->ipc_c, // Connection
523523- out_frame_id, // Frame id
524524- &wake_up_time_ns, // When we should wake up
525525- out_predicted_display_time, // Display time
526526- out_predicted_display_period)); // Current period
525525+ IPC_CALL_CHK(ipc_call_compositor_predict_frame( //
526526+ icc->ipc_c, // Connection
527527+ &frame_id, // Frame id
528528+ &wake_up_time_ns, // When we should wake up
529529+ &predicted_display_time, // Display time
530530+ &predicted_display_period)); // Current period
527531528532 // Wait until the given wake up time.
529533 u_wait_until(&icc->sleeper, wake_up_time_ns);
530534531535 // Signal that we woke up.
532532- res = ipc_call_compositor_wait_woke(icc->ipc_c, *out_frame_id);
536536+ res = ipc_call_compositor_wait_woke(icc->ipc_c, frame_id);
537537+538538+ // Only write arguments once we have fully waited.
539539+ *out_frame_id = frame_id;
540540+ *out_predicted_display_time = predicted_display_time;
541541+ *out_predicted_display_period = predicted_display_period;
533542534543 return res;
535544}