Mir

Merge lp:~alan-griffiths/mir/create-windowspec-for-all-types into lp:mir

Proposed by Alan Griffiths
Status: Merged
Approved by: Alan Griffiths
Approved revision: no longer in the source branch.
Merged at revision: 4054
Proposed branch: lp:~alan-griffiths/mir/create-windowspec-for-all-types
Merge into: lp:mir
Diff against target: 186 lines (+143/-0)
4 files modified
include/client/mir_toolkit/mir_window.h (+45/-0)
src/client/mir_surface_api.cpp (+35/-0)
src/client/symbols.map (+4/-0)
tests/acceptance-tests/test_client_surfaces.cpp (+59/-0)
To merge this branch: bzr merge lp:~alan-griffiths/mir/create-windowspec-for-all-types
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Alexandros Frantzis (community) Approve
Review via email: mp+317986@code.launchpad.net

Commit message

[libmirclient] Add mir_create_[freestyle|gloss|satellite|utility]_window_spec

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4050
https://mir-jenkins.ubuntu.com/job/mir-ci/3039/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4062
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4149
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4139
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4139
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4139
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4089
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4089/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4089
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4089/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4089
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4089/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4089
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4089/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4089
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4089/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4089
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4089/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3039/rebuild

review: Approve (continuous-integration)
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4051
https://mir-jenkins.ubuntu.com/job/mir-ci/3059/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4090
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4177
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4167
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4167
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4167
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4117
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4117/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4117
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4117/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4117
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4117/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4117
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4117/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4117
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4117/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4117
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4117/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3059/rebuild

review: Approve (continuous-integration)
Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

Nits:

+ mir_output_get_logical_width;
  mir_output_get_logical_height;
- mir_output_get_logical_width;
+ mir_create_freestyle_window_spec;
+ mir_create_gloss_window_spec;
+ mir_create_satellite_window_spec;
+ mir_create_utility_window_spec;

I thought we were trying to keep symbols in alphabetical order :)

+ auto parent = mtf::make_any_surface(connection);

Not used, but fixed in dependent branch, so non-blocking.

review: Approve
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

> Not used, but fixed in dependent branch, so non-blocking.

fixed

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4052
https://mir-jenkins.ubuntu.com/job/mir-ci/3060/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4091
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4178
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4168
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4168
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4168
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4118
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4118/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4118
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4118/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4118
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4118/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4118
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4118/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4118
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4118/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4118
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4118/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3060/rebuild

review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'include/client/mir_toolkit/mir_window.h'
2--- include/client/mir_toolkit/mir_window.h 2017-02-15 07:38:33 +0000
3+++ include/client/mir_toolkit/mir_window.h 2017-02-24 14:11:58 +0000
4@@ -170,6 +170,51 @@
5 int width, int height);
6
7 /**
8+ * Create a window specification for a gloss window.
9+ *
10+ * \param [in] connection Connection the window will be created on
11+ * \param [in] width Requested width. The server is not guaranteed to return a window of this width.
12+ * \param [in] height Requested height. The server is not guaranteed to return a window of this height.
13+ * \return A handle that can be passed to mir_create_window() to complete construction.
14+ */
15+MirWindowSpec*
16+mir_create_gloss_window_spec(MirConnection* connection, int width, int height);
17+
18+/**
19+ * Create a window specification for a satellite window.
20+ *
21+ * \param [in] connection Connection the window will be created on
22+ * \param [in] width Requested width. The server is not guaranteed to return a window of this width.
23+ * \param [in] height Requested height. The server is not guaranteed to return a window of this height.
24+ * \param [in] parent A valid parent window.
25+ * \return A handle that can be passed to mir_create_window() to complete construction.
26+ */
27+MirWindowSpec*
28+mir_create_satellite_window_spec(MirConnection* connection, int width, int height, MirWindow* parent);
29+
30+/**
31+ * Create a window specification for a utility window.
32+ *
33+ * \param [in] connection Connection the window will be created on
34+ * \param [in] width Requested width. The server is not guaranteed to return a window of this width.
35+ * \param [in] height Requested height. The server is not guaranteed to return a window of this height.
36+ * \return A handle that can be passed to mir_create_window() to complete construction.
37+ */
38+MirWindowSpec*
39+mir_create_utility_window_spec(MirConnection* connection, int width, int height);
40+
41+/**
42+ * Create a window specification for a freestyle window.
43+ *
44+ * \param [in] connection Connection the window will be created on
45+ * \param [in] width Requested width. The server is not guaranteed to return a window of this width.
46+ * \param [in] height Requested height. The server is not guaranteed to return a window of this height.
47+ * \return A handle that can be passed to mir_create_window() to complete construction.
48+ */
49+MirWindowSpec*
50+mir_create_freestyle_window_spec(MirConnection* connection, int width, int height);
51+
52+/**
53 * Create a window specification.
54 * This can be used with mir_create_window() to create a window or with
55 * mir_window_apply_spec() to change an existing window.
56
57=== modified file 'src/client/mir_surface_api.cpp'
58--- src/client/mir_surface_api.cpp 2017-02-15 07:38:33 +0000
59+++ src/client/mir_surface_api.cpp 2017-02-24 14:11:58 +0000
60@@ -132,6 +132,41 @@
61 return spec;
62 }
63
64+MirWindowSpec*
65+mir_create_gloss_window_spec(MirConnection* connection, int width, int height)
66+{
67+ auto spec = new MirWindowSpec{connection, width, height, mir_pixel_format_invalid};
68+ spec->type = mir_window_type_gloss;
69+ return spec;
70+}
71+
72+MirWindowSpec*
73+mir_create_satellite_window_spec(MirConnection* connection, int width, int height, MirWindow* parent)
74+{
75+ mir::require(mir_window_is_valid(parent));
76+
77+ auto spec = new MirWindowSpec{connection, width, height, mir_pixel_format_invalid};
78+ spec->type = mir_window_type_satellite;
79+ spec->parent = parent;
80+
81+ return spec;
82+}
83+
84+MirWindowSpec*
85+mir_create_utility_window_spec(MirConnection* connection, int width, int height)
86+{
87+ auto spec = new MirWindowSpec{connection, width, height, mir_pixel_format_invalid};
88+ spec->type = mir_window_type_utility;
89+ return spec;
90+}
91+
92+MirWindowSpec*
93+mir_create_freestyle_window_spec(MirConnection* connection, int width, int height){
94+ auto spec = new MirWindowSpec{connection, width, height, mir_pixel_format_invalid};
95+ spec->type = mir_window_type_freestyle;
96+ return spec;
97+}
98+
99 MirWindowSpec* mir_create_window_spec(MirConnection* connection)
100 try
101 {
102
103=== modified file 'src/client/symbols.map'
104--- src/client/symbols.map 2017-02-22 14:36:45 +0000
105+++ src/client/symbols.map 2017-02-24 14:11:58 +0000
106@@ -609,6 +609,10 @@
107 global:
108 mir_connection_apply_session_input_config;
109 mir_connection_set_base_input_config;
110+ mir_create_freestyle_window_spec;
111+ mir_create_gloss_window_spec;
112+ mir_create_satellite_window_spec;
113+ mir_create_utility_window_spec;
114 mir_get_client_api_version;
115 mir_input_device_get_keyboard_config;
116 mir_input_device_get_mutable_keyboard_config;
117
118=== modified file 'tests/acceptance-tests/test_client_surfaces.cpp'
119--- tests/acceptance-tests/test_client_surfaces.cpp 2017-02-15 07:38:33 +0000
120+++ tests/acceptance-tests/test_client_surfaces.cpp 2017-02-24 14:11:58 +0000
121@@ -248,6 +248,65 @@
122 mir_window_release_sync(im);
123 }
124
125+TEST_F(ClientSurfaces, can_be_gloss)
126+{
127+ auto parent = mtf::make_any_surface(connection);
128+ auto spec = mir_create_gloss_window_spec(connection, 640, 480);
129+ ASSERT_THAT(spec, NotNull());
130+ mir_window_spec_set_pixel_format(spec, mir_pixel_format_abgr_8888);
131+
132+ auto window = mir_create_window_sync(spec);
133+ mir_window_spec_release(spec);
134+ EXPECT_EQ(mir_window_get_type(window), mir_window_type_gloss);
135+
136+ mir_window_release_sync(window);
137+ mir_window_release_sync(parent);
138+}
139+
140+TEST_F(ClientSurfaces, can_be_satellite)
141+{
142+ auto parent = mtf::make_any_surface(connection);
143+ auto spec = mir_create_satellite_window_spec(connection, 640, 480, parent);
144+ ASSERT_THAT(spec, NotNull());
145+ mir_window_spec_set_pixel_format(spec, mir_pixel_format_abgr_8888);
146+
147+ auto window = mir_create_window_sync(spec);
148+ mir_window_spec_release(spec);
149+
150+ EXPECT_EQ(mir_window_get_type(window), mir_window_type_satellite);
151+
152+ mir_window_release_sync(window);
153+ mir_window_release_sync(parent);
154+}
155+
156+TEST_F(ClientSurfaces, can_be_utility)
157+{
158+ auto spec = mir_create_utility_window_spec(connection, 640, 480);
159+ ASSERT_THAT(spec, NotNull());
160+ mir_window_spec_set_pixel_format(spec, mir_pixel_format_abgr_8888);
161+
162+ auto window = mir_create_window_sync(spec);
163+ mir_window_spec_release(spec);
164+
165+ EXPECT_EQ(mir_window_get_type(window), mir_window_type_utility);
166+
167+ mir_window_release_sync(window);
168+}
169+
170+TEST_F(ClientSurfaces, can_be_freestyle)
171+{
172+ auto spec = mir_create_freestyle_window_spec(connection, 640, 480);
173+ ASSERT_THAT(spec, NotNull());
174+ mir_window_spec_set_pixel_format(spec, mir_pixel_format_abgr_8888);
175+
176+ auto window = mir_create_window_sync(spec);
177+ mir_window_spec_release(spec);
178+
179+ EXPECT_EQ(mir_window_get_type(window), mir_window_type_freestyle);
180+
181+ mir_window_release_sync(window);
182+}
183+
184 TEST_F(ClientSurfaces, can_be_renamed)
185 {
186 auto spec = mir_create_normal_window_spec(connection, 123, 456);

Subscribers

People subscribed via source and target branches