~alan-griffiths/mir/fix-1716436

« back to all changes in this revision

Viewing changes to src/server/compositor/multi_monitor_arbiter.h

  • Committer: Tarmac
  • Author(s): Christopher James Halse Rogers
  • Date: 2017-08-16 13:04:42 UTC
  • mfrom: (4201.6.5 further-plumbing-followup)
  • Revision ID: tarmac-20170816130442-9rhjwglquxn14r9c
Remove even more manual reference counting of mg::Buffer-s. .

Approved by mir-ci-bot, Alan Griffiths, Brandon Schaefer.

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
    ~MultiMonitorArbiter();
43
43
 
44
44
    std::shared_ptr<graphics::Buffer> compositor_acquire(compositor::CompositorID id) override;
45
 
    void compositor_release(std::shared_ptr<graphics::Buffer> const&) override;
46
45
    std::shared_ptr<graphics::Buffer> snapshot_acquire() override;
47
 
    void snapshot_release(std::shared_ptr<graphics::Buffer> const&) override;
48
46
    void set_schedule(std::shared_ptr<Schedule> const& schedule);
49
47
    bool buffer_ready_for(compositor::CompositorID id);
50
48
    bool has_buffer();
51
49
    void advance_schedule();
52
50
 
53
51
private:
54
 
    void decrease_refcount_for(graphics::BufferID id, std::lock_guard<std::mutex> const&);
55
 
    void clean_onscreen_buffers(std::lock_guard<std::mutex> const&);
56
 
 
57
52
    std::mutex mutable mutex;
58
 
    struct ScheduleEntry
59
 
    {
60
 
        ScheduleEntry(std::shared_ptr<graphics::Buffer> const& buffer, unsigned int use_count) :
61
 
            buffer(buffer),
62
 
            use_count(use_count)
63
 
        {
64
 
        }
65
 
        std::shared_ptr<graphics::Buffer> buffer;
66
 
        unsigned int use_count;
67
 
    };
68
 
    std::deque<ScheduleEntry> onscreen_buffers;
 
53
    std::shared_ptr<graphics::Buffer> current_buffer;
69
54
    std::set<compositor::CompositorID> current_buffer_users;
70
55
    std::shared_ptr<Schedule> schedule;
71
56
};