[PATCH weston v2 1/6] test: Add a compositor test-mode
Derek Foreman
derekf at osg.samsung.com
Mon Dec 22 14:08:16 PST 2014
For now, the intention of test-mode is to have a way to allow a client
to control the presentation clock to allow capturing deterministic
screenshots during testing.
Once in test-mode you're trapped in test-mode forever.
Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
---
protocol/wayland-test.xml | 12 +++++++++++-
src/compositor.c | 24 ++++++++++++++++++++++++
src/compositor.h | 6 ++++++
tests/weston-test.c | 9 +++++++++
4 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/protocol/wayland-test.xml b/protocol/wayland-test.xml
index 18b6625..292abe9 100644
--- a/protocol/wayland-test.xml
+++ b/protocol/wayland-test.xml
@@ -26,7 +26,7 @@
THIS SOFTWARE.
</copyright>
- <interface name="wl_test" version="1">
+ <interface name="wl_test" version="2">
<request name="move_surface">
<arg name="surface" type="object" interface="wl_surface"/>
<arg name="x" type="int"/>
@@ -58,5 +58,15 @@
<event name="n_egl_buffers">
<arg name="n" type="uint"/>
</event>
+ <!-- interface version 2 -->
+ <request name="enable_test_mode"/>
+ <description summary="enter compositor test mode">
+ This request enters a compositor test mode. In compositor test
+ mode clients can interfere with the normal operation of the
+ compositor.
+
+ Once test mode is enabled it remains active for the life of the
+ compositor.
+ </description>
</interface>
</protocol>
diff --git a/src/compositor.c b/src/compositor.c
index b84658a..51188e2 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4750,6 +4750,30 @@ weston_transform_to_string(uint32_t output_transform)
return "<illegal value>";
}
+/** Enters compositor test mode.
+ *
+ * \param compositor The compositor object
+ *
+ * This function places the compositor into a test mode where
+ * clients can control basic functionality.
+ *
+ * \note This should only ever be called by the weston-test module.
+ */
+WL_EXPORT void
+weston_compositor_test_mode_enable(struct weston_compositor *compositor)
+{
+ weston_log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
+ weston_log("Entering compositor test mode.\n");
+ weston_log("This should never be seen in normal operation.\n");
+ weston_log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
+
+ /* set the test_mode flag first in case the callback follows
+ * code paths that test it...
+ */
+ compositor->test_mode = true;
+ if (compositor->enable_test_mode)
+ compositor->enable_test_mode(compositor);
+}
int main(int argc, char *argv[])
{
diff --git a/src/compositor.h b/src/compositor.h
index 3f7ed4a..2b99225 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -650,6 +650,7 @@ struct weston_compositor {
void (*destroy)(struct weston_compositor *ec);
void (*restore)(struct weston_compositor *ec);
int (*authenticate)(struct weston_compositor *c, uint32_t id);
+ void (*enable_test_mode)(struct weston_compositor *c);
struct weston_launcher *launcher;
@@ -668,6 +669,8 @@ struct weston_compositor {
clockid_t presentation_clock;
int exit_code;
+
+ bool test_mode;
};
struct weston_buffer {
@@ -1490,6 +1493,9 @@ weston_parse_transform(const char *transform, uint32_t *out);
const char *
weston_transform_to_string(uint32_t output_transform);
+void
+weston_compositor_test_mode_enable(struct weston_compositor *compositor);
+
#ifdef __cplusplus
}
#endif
diff --git a/tests/weston-test.c b/tests/weston-test.c
index 77eaa23..0a213b2 100644
--- a/tests/weston-test.c
+++ b/tests/weston-test.c
@@ -235,6 +235,14 @@ get_n_buffers(struct wl_client *client, struct wl_resource *resource)
wl_test_send_n_egl_buffers(resource, n_buffers);
}
+static void
+enable_test_mode(struct wl_client *client, struct wl_resource *resource)
+{
+ struct weston_test *test = wl_resource_get_user_data(resource);
+
+ weston_compositor_test_mode_enable(test->compositor);
+}
+
static const struct wl_test_interface test_implementation = {
move_surface,
move_pointer,
@@ -242,6 +250,7 @@ static const struct wl_test_interface test_implementation = {
activate_surface,
send_key,
get_n_buffers,
+ enable_test_mode,
};
static void
--
2.1.3
More information about the wayland-devel
mailing list