[PATCH weston v2 2/6] compositors: Wrap clock_gettime() usage
Derek Foreman
derekf at osg.samsung.com
Mon Dec 22 14:09:15 PST 2014
In preparation for a future patch which allows test clients to control
the presentation clock, we wrap any clock_gettime() of the presentation
clock in weston_compositor_presentation_clock_gettime().
Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
---
src/compositor-drm.c | 2 +-
src/compositor-fbdev.c | 2 +-
src/compositor-headless.c | 2 +-
src/compositor-rdp.c | 2 +-
src/compositor-x11.c | 2 +-
src/compositor.c | 22 ++++++++++++++++++++++
src/compositor.h | 5 +++++
7 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 9b4d4dc..9c9a9e2 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -721,7 +721,7 @@ drm_output_start_repaint_loop(struct weston_output *output_base)
finish_frame:
/* if we cannot page-flip, immediately finish frame */
- clock_gettime(compositor->base.presentation_clock, &ts);
+ weston_compositor_presentation_clock_gettime(&compositor->base, &ts);
weston_output_finish_frame(output_base, &ts);
}
diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c
index 65bb035..514ec83 100644
--- a/src/compositor-fbdev.c
+++ b/src/compositor-fbdev.c
@@ -116,7 +116,7 @@ fbdev_output_start_repaint_loop(struct weston_output *output)
{
struct timespec ts;
- clock_gettime(output->compositor->presentation_clock, &ts);
+ weston_compositor_presentation_clock_gettime(output->compositor, &ts);
weston_output_finish_frame(output, &ts);
}
diff --git a/src/compositor-headless.c b/src/compositor-headless.c
index 945c84b..a023e45 100644
--- a/src/compositor-headless.c
+++ b/src/compositor-headless.c
@@ -57,7 +57,7 @@ headless_output_start_repaint_loop(struct weston_output *output)
{
struct timespec ts;
- clock_gettime(output->compositor->presentation_clock, &ts);
+ weston_compositor_presentation_clock_gettime(output->compositor, &ts);
weston_output_finish_frame(output, &ts);
}
diff --git a/src/compositor-rdp.c b/src/compositor-rdp.c
index 2048f8f..e808572 100644
--- a/src/compositor-rdp.c
+++ b/src/compositor-rdp.c
@@ -307,7 +307,7 @@ rdp_output_start_repaint_loop(struct weston_output *output)
{
struct timespec ts;
- clock_gettime(output->compositor->presentation_clock, &ts);
+ weston_compositor_presentation_clock_gettime(output->compositor, &ts);
weston_output_finish_frame(output, &ts);
}
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index 29f2119..166d61b 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -340,7 +340,7 @@ x11_output_start_repaint_loop(struct weston_output *output)
{
struct timespec ts;
- clock_gettime(output->compositor->presentation_clock, &ts);
+ weston_compositor_presentation_clock_gettime(output->compositor, &ts);
weston_output_finish_frame(output, &ts);
}
diff --git a/src/compositor.c b/src/compositor.c
index 51188e2..d645391 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4220,6 +4220,28 @@ weston_compositor_set_default_pointer_grab(struct weston_compositor *ec,
}
}
+/** Get the presentation clock time.
+ *
+ * \param compositor The compositor object
+ * \param ts Returned timespec
+ *
+ * Wraps clock_gettime() so compositor test mode can provide a client driven
+ * presentation clock.
+ *
+ * Returns 0 for success or -1 for failure.
+ */
+WL_EXPORT int
+weston_compositor_presentation_clock_gettime(
+ const struct weston_compositor *compositor,
+ struct timespec *ts)
+{
+ if (compositor->test_mode) {
+ *ts = compositor->test_time;
+ return 0;
+ }
+ return clock_gettime(compositor->presentation_clock, ts);
+}
+
WL_EXPORT int
weston_compositor_set_presentation_clock(struct weston_compositor *compositor,
clockid_t clk_id)
diff --git a/src/compositor.h b/src/compositor.h
index 2b99225..1fcd067 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -671,6 +671,7 @@ struct weston_compositor {
int exit_code;
bool test_mode;
+ struct timespec test_time;
};
struct weston_buffer {
@@ -1276,6 +1277,10 @@ weston_compositor_set_presentation_clock(struct weston_compositor *compositor,
int
weston_compositor_set_presentation_clock_software(
struct weston_compositor *compositor);
+int
+weston_compositor_presentation_clock_gettime(
+ const struct weston_compositor *compositor,
+ struct timespec *ts);
void
weston_compositor_shutdown(struct weston_compositor *ec);
void
--
2.1.3
More information about the wayland-devel
mailing list