~robertcarr/mir/input-injecter-api

« back to all changes in this revision

Viewing changes to src/server/compositor/default_display_buffer_compositor.cpp

  • Committer: Robert Carr
  • Date: 2013-10-02 19:05:45 UTC
  • mfrom: (1095.1.6 development-branch)
  • Revision ID: robert.carr@canonical.com-20131002190545-nx4r873yu2np2d9j
MergeĀ developmentĀ branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
#include "bypass.h"
29
29
#include <mutex>
30
30
#include <cstdlib>
 
31
#include <vector>
31
32
 
32
33
namespace mc = mir::compositor;
33
34
namespace mg = mir::graphics;
64
65
    std::shared_ptr<mc::Scene> const& scene,
65
66
    std::shared_ptr<mc::Renderer> const& renderer,
66
67
    std::shared_ptr<mc::OverlayRenderer> const& overlay_renderer)
67
 
    : mc::BasicDisplayBufferCompositor{display_buffer},
 
68
    : display_buffer(display_buffer),
68
69
      scene{scene},
69
70
      renderer{renderer},
70
71
      overlay_renderer{overlay_renderer},
118
119
    }
119
120
 
120
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
}
123
134
 
124
135
void mc::DefaultDisplayBufferCompositor::compose(