Mir
buffer.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2012 Canonical Ltd.
3  *
4  * This program is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License version 3,
6  * as 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 Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by:
17  * Kevin DuBois <kevin.dubois@canonical.com>
18  */
19 
20 #ifndef MIR_CLIENT_ANDROID_ANDROID_CLIENT_BUFFER_H_
21 #define MIR_CLIENT_ANDROID_ANDROID_CLIENT_BUFFER_H_
22 
24 #include "mir/aging_buffer.h"
25 
26 #include <system/window.h>
27 #include <memory>
28 
29 namespace mir
30 {
31 namespace client
32 {
33 namespace android
34 {
35 
36 class BufferRegistrar;
37 class Buffer : public AgingBuffer
38 {
39 public:
40  Buffer(
41  std::shared_ptr<BufferRegistrar> const& registrar,
42  MirBufferPackage const& package,
43  MirPixelFormat pf);
44 
45  std::shared_ptr<MemoryRegion> secure_for_cpu_write() override;
46  geometry::Size size() const override;
47  geometry::Stride stride() const override;
48  MirPixelFormat pixel_format() const override;
49  std::shared_ptr<graphics::NativeBuffer> native_buffer_handle() const override;
50  void update_from(MirBufferPackage const& update_package) override;
51  void fill_update_msg(MirBufferPackage& message) override;
52 
53  Buffer(const Buffer&) = delete;
54  Buffer& operator=(const Buffer&) = delete;
55 private:
56  void pack_native_window_buffer();
57 
58  std::shared_ptr<BufferRegistrar> const buffer_registrar;
59  std::shared_ptr<graphics::NativeBuffer> const native_buffer;
60  MirPixelFormat const buffer_pf;
61  geometry::Stride const buffer_stride;
62  geometry::Size const buffer_size;
63 };
64 
65 }
66 }
67 }
68 #endif /* MIR_CLIENT_ANDROID_ANDROID_CLIENT_BUFFER_H_ */
Definition: size.h:30
std::shared_ptr< MemoryRegion > secure_for_cpu_write() override
Definition: buffer.cpp:43
All things Mir.
Definition: atomic_callback.h:25
Buffer(std::shared_ptr< BufferRegistrar > const &registrar, MirBufferPackage const &package, MirPixelFormat pf)
Definition: buffer.cpp:31
MirPixelFormat pixel_format() const override
Definition: buffer.cpp:66
void fill_update_msg(MirBufferPackage &message) override
Definition: buffer.cpp:87
geometry::Stride stride() const override
Definition: buffer.cpp:61
void update_from(MirBufferPackage const &update_package) override
Definition: buffer.cpp:76
Definition: mir_native_buffer.h:30
MirPixelFormat
32-bit pixel formats (8888): The order of components in the enum matches the order of the components ...
Definition: common.h:134
Definition: android_input_receiver.h:36
Definition: aging_buffer.h:29
geometry::Size size() const override
Definition: buffer.cpp:56
Definition: dimensions.h:36
Definition: buffer.h:37
Buffer & operator=(const Buffer &)=delete
std::shared_ptr< graphics::NativeBuffer > native_buffer_handle() const override
Definition: buffer.cpp:71

Copyright © 2012-2015 Canonical Ltd.
Generated on Thu Oct 8 16:20:16 UTC 2015