Mir

Merge lp:~vanvugt/mir/simplify-DisplayBufferCompositors into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Approved by: kevin gunn
Approved revision: no longer in the source branch.
Merged at revision: 1101
Proposed branch: lp:~vanvugt/mir/simplify-DisplayBufferCompositors
Merge into: lp:mir
Diff against target: 211 lines (+22/-112)
5 files modified
include/server/mir/compositor/basic_display_buffer_compositor.h (+0/-58)
src/server/compositor/CMakeLists.txt (+0/-1)
src/server/compositor/basic_display_buffer_compositor.cpp (+0/-49)
src/server/compositor/default_display_buffer_compositor.cpp (+13/-2)
src/server/compositor/default_display_buffer_compositor.h (+9/-2)
To merge this branch: bzr merge lp:~vanvugt/mir/simplify-DisplayBufferCompositors
Reviewer Review Type Date Requested Status
Kevin DuBois (community) Approve
Alan Griffiths Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+188773@code.launchpad.net

Commit message

Simplify {Default,Basic}DisplayBufferCompositor classes into one.
Less code and resolves a TODO.

Description of the change

This does not appear to affect Unity8 or ABIs.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

This make more sense in conjunction with the dependent composite-not-compose, but is OK.

Note that this is both an API and ABI change - but shouldn't affect any downstream projects we know about.

review: Approve
Revision history for this message
Kevin DuBois (kdub) wrote :

much better

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== removed file 'include/server/mir/compositor/basic_display_buffer_compositor.h'
--- include/server/mir/compositor/basic_display_buffer_compositor.h 2013-08-28 03:41:48 +0000
+++ include/server/mir/compositor/basic_display_buffer_compositor.h 1970-01-01 00:00:00 +0000
@@ -1,58 +0,0 @@
1/*
2 * Copyright © 2013 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19
20#ifndef MIR_COMPOSITOR_BASIC_DISPLAY_BUFFER_COMPOSITOR_H_
21#define MIR_COMPOSITOR_BASIC_DISPLAY_BUFFER_COMPOSITOR_H_
22
23#include "mir/compositor/display_buffer_compositor.h"
24
25#include <functional>
26#include <memory>
27
28namespace mir
29{
30namespace graphics
31{
32class DisplayBuffer;
33}
34
35namespace geometry
36{
37struct Rectangle;
38}
39
40namespace compositor
41{
42class BasicDisplayBufferCompositor : public DisplayBufferCompositor
43{
44public:
45 BasicDisplayBufferCompositor(graphics::DisplayBuffer& display_buffer);
46
47 virtual void composite();
48 virtual void compose(
49 mir::geometry::Rectangle const& view_area,
50 std::function<void(std::shared_ptr<void> const&)> save_resource) = 0;
51
52protected:
53 graphics::DisplayBuffer& display_buffer;
54};
55}
56}
57
58#endif /* MIR_COMPOSITOR_BASIC_DISPLAY_BUFFER_COMPOSITOR_H_ */
590
=== modified file 'src/server/compositor/CMakeLists.txt'
--- src/server/compositor/CMakeLists.txt 2013-08-28 03:41:48 +0000
+++ src/server/compositor/CMakeLists.txt 2013-10-02 07:14:01 +0000
@@ -1,7 +1,6 @@
1set(1set(
2 MIR_COMPOSITOR_SRCS2 MIR_COMPOSITOR_SRCS
33
4 basic_display_buffer_compositor.cpp
5 default_display_buffer_compositor.cpp4 default_display_buffer_compositor.cpp
6 default_display_buffer_compositor_factory.cpp5 default_display_buffer_compositor_factory.cpp
7 temporary_buffers.cpp6 temporary_buffers.cpp
87
=== removed file 'src/server/compositor/basic_display_buffer_compositor.cpp'
--- src/server/compositor/basic_display_buffer_compositor.cpp 2013-08-28 03:41:48 +0000
+++ src/server/compositor/basic_display_buffer_compositor.cpp 1970-01-01 00:00:00 +0000
@@ -1,49 +0,0 @@
1/*
2 * Copyright © 2013 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19#include "mir/compositor/basic_display_buffer_compositor.h"
20
21#include "mir/graphics/display_buffer.h"
22
23#include <vector>
24
25namespace mc = mir::compositor;
26namespace mg = mir::graphics;
27
28mc::BasicDisplayBufferCompositor::BasicDisplayBufferCompositor(
29 mg::DisplayBuffer& display_buffer)
30 : display_buffer(display_buffer)
31{
32}
33
34// TODO I'm not clear why this code is in the DisplayBufferCompositor hierarchy.
35// (As opposed to the call site calling compose directly.)
36// But changing that breaks RecordingDisplayBufferCompositor - which is too
37// much churn for this refactoring.
38void mc::BasicDisplayBufferCompositor::composite()
39{
40 // preserves buffers used in rendering until after post_update()
41 std::vector<std::shared_ptr<void>> saved_resources;
42 auto save_resource = [&](std::shared_ptr<void> const& r) { saved_resources.push_back(r); };
43
44 display_buffer.make_current();
45
46 compose(display_buffer.view_area(), save_resource);
47
48 display_buffer.post_update();
49}
500
=== modified file 'src/server/compositor/default_display_buffer_compositor.cpp'
--- src/server/compositor/default_display_buffer_compositor.cpp 2013-09-20 18:19:53 +0000
+++ src/server/compositor/default_display_buffer_compositor.cpp 2013-10-02 07:14:01 +0000
@@ -28,6 +28,7 @@
28#include "bypass.h"28#include "bypass.h"
29#include <mutex>29#include <mutex>
30#include <cstdlib>30#include <cstdlib>
31#include <vector>
3132
32namespace mc = mir::compositor;33namespace mc = mir::compositor;
33namespace mg = mir::graphics;34namespace mg = mir::graphics;
@@ -64,7 +65,7 @@
64 std::shared_ptr<mc::Scene> const& scene,65 std::shared_ptr<mc::Scene> const& scene,
65 std::shared_ptr<mc::Renderer> const& renderer,66 std::shared_ptr<mc::Renderer> const& renderer,
66 std::shared_ptr<mc::OverlayRenderer> const& overlay_renderer)67 std::shared_ptr<mc::OverlayRenderer> const& overlay_renderer)
67 : mc::BasicDisplayBufferCompositor{display_buffer},68 : display_buffer(display_buffer),
68 scene{scene},69 scene{scene},
69 renderer{renderer},70 renderer{renderer},
70 overlay_renderer{overlay_renderer},71 overlay_renderer{overlay_renderer},
@@ -118,7 +119,17 @@
118 }119 }
119120
120 if (!bypassed)121 if (!bypassed)
121 mc::BasicDisplayBufferCompositor::composite();122 {
123 // preserves buffers used in rendering until after post_update()
124 std::vector<std::shared_ptr<void>> saved_resources;
125 auto save_resource = [&](std::shared_ptr<void> const& r) { saved_resources.push_back(r); };
126
127 display_buffer.make_current();
128
129 compose(display_buffer.view_area(), save_resource);
130
131 display_buffer.post_update();
132 }
122}133}
123134
124void mc::DefaultDisplayBufferCompositor::compose(135void mc::DefaultDisplayBufferCompositor::compose(
125136
=== modified file 'src/server/compositor/default_display_buffer_compositor.h'
--- src/server/compositor/default_display_buffer_compositor.h 2013-08-29 09:00:55 +0000
+++ src/server/compositor/default_display_buffer_compositor.h 2013-10-02 07:14:01 +0000
@@ -19,7 +19,8 @@
19#ifndef MIR_COMPOSITOR_DEFAULT_DISPLAY_BUFFER_COMPOSITOR_H_19#ifndef MIR_COMPOSITOR_DEFAULT_DISPLAY_BUFFER_COMPOSITOR_H_
20#define MIR_COMPOSITOR_DEFAULT_DISPLAY_BUFFER_COMPOSITOR_H_20#define MIR_COMPOSITOR_DEFAULT_DISPLAY_BUFFER_COMPOSITOR_H_
2121
22#include "mir/compositor/basic_display_buffer_compositor.h"22#include "mir/compositor/display_buffer_compositor.h"
23#include <memory>
2324
24namespace mir25namespace mir
25{26{
@@ -27,6 +28,10 @@
27{28{
28class DisplayBuffer;29class DisplayBuffer;
29}30}
31namespace geometry
32{
33struct Rectangle;
34}
30namespace compositor35namespace compositor
31{36{
3237
@@ -34,7 +39,7 @@
34class Renderer;39class Renderer;
35class OverlayRenderer;40class OverlayRenderer;
3641
37class DefaultDisplayBufferCompositor : public BasicDisplayBufferCompositor42class DefaultDisplayBufferCompositor : public DisplayBufferCompositor
38{43{
39public:44public:
40 DefaultDisplayBufferCompositor(45 DefaultDisplayBufferCompositor(
@@ -50,6 +55,8 @@
50 std::function<void(std::shared_ptr<void> const&)> save_resource);55 std::function<void(std::shared_ptr<void> const&)> save_resource);
5156
52private:57private:
58 graphics::DisplayBuffer& display_buffer;
59
53 std::shared_ptr<Scene> const scene;60 std::shared_ptr<Scene> const scene;
54 std::shared_ptr<Renderer> const renderer;61 std::shared_ptr<Renderer> const renderer;
55 std::shared_ptr<OverlayRenderer> const overlay_renderer;62 std::shared_ptr<OverlayRenderer> const overlay_renderer;

Subscribers

People subscribed via source and target branches