2
* Copyright © 2012-2014 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License version 3,
6
* as published by the Free Software Foundation.
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.
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/>.
17
* Kevin DuBois <kevin.dubois@canonical.com>
20
#ifndef MIR_COMPOSITOR_BUFFER_STREAM_H_
21
#define MIR_COMPOSITOR_BUFFER_STREAM_H_
23
#include "mir/geometry/size.h"
24
#include "mir_toolkit/common.h"
25
#include "mir/graphics/buffer_id.h"
42
virtual ~BufferStream() = default;
44
virtual void acquire_client_buffer(
45
std::function<void(graphics::Buffer* buffer)> complete) = 0;
46
virtual void release_client_buffer(graphics::Buffer* buf) = 0;
47
virtual std::shared_ptr<graphics::Buffer>
48
lock_compositor_buffer(void const* user_id) = 0;
49
virtual std::shared_ptr<graphics::Buffer> lock_snapshot_buffer() = 0;
50
virtual MirPixelFormat get_stream_pixel_format() = 0;
51
virtual geometry::Size stream_size() = 0;
52
virtual void resize(geometry::Size const& size) = 0;
53
virtual void allow_framedropping(bool) = 0;
54
virtual void force_requests_to_complete() = 0;
55
virtual int buffers_ready_for_compositor() const = 0;
56
virtual void drop_old_buffers() = 0;
62
#endif /* MIR_COMPOSITOR_BUFFER_STREAM_H_ */