[PATCH weston 2/6] compositors: Wrap clock_gettime() usage

Derek Foreman derekf at osg.samsung.com
Fri Dec 19 10:45:46 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          | 12 ++++++++++++
 src/compositor.h          |  5 +++++
 7 files changed, 22 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 833cf51..6109eb5 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4221,6 +4221,18 @@ weston_compositor_set_default_pointer_grab(struct weston_compositor *ec,
 }
 
 WL_EXPORT int
+weston_compositor_presentation_clock_gettime(
+					 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..924e354 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(
+					 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