2 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
17 * @file FShell_AppWidgetBuffer.h
18 * @brief This is the header file for the _AppWidgetBuffer class.
20 * This header file contains the declarations of the %_AppWidgetBuffer class.
22 #ifndef _FSHELL_INTERNAL_APPWIDGET_BUFFER_H_
23 #define _FSHELL_INTERNAL_APPWIDGET_BUFFER_H_
25 #include <unique_ptr.h>
29 #include <X11/extensions/XShm.h>
30 #include <X11/Xutil.h>
31 #include <X11/Xproto.h>
32 #include <X11/extensions/Xdamage.h>
33 #include <X11/extensions/Xfixes.h>
36 #include <xf86drmMode.h>
37 #include <tbm_bufmgr.h>
39 #include <FBaseDataType.h>
40 #include <FGrpDimension.h>
41 #include <FGrpFloatDimension.h>
43 namespace Tizen { namespace Graphics
48 namespace Tizen { namespace Shell
52 * @class _AppWidgetBuffer
56 class _AppWidgetBuffer
59 _AppWidgetBuffer(void);
60 ~_AppWidgetBuffer(void);
62 void Initialize(void);
63 void* AllocBuffer(Pixmap pixmap, const Tizen::Graphics::Dimension& size);
64 void DeallocBuffer(void);
65 void* LockBuffer(void);
66 void UnlockBuffer(void);
67 bool IsGemBufferEnabled(void) const;
68 Display* GetDisplay(void) const;
70 XImage* GetXImage(void) const;
71 Pixmap GetPixmap(void) const;
72 void Dump(const char* pName);
75 _AppWidgetBuffer(const _AppWidgetBuffer& rhs);
76 _AppWidgetBuffer& operator =(const _AppWidgetBuffer& rhs);
82 _Buffer(_AppWidgetBuffer* pAppWidgetBuffer);
83 virtual ~_Buffer(void);
84 void* AllocBuffer(Pixmap pixmap, const Tizen::Graphics::Dimension& size);
85 void DeallocBuffer(void);
86 void* LockBuffer(void);
87 void UnlockBuffer(void);
89 XImage* GetXImage(void) const;
90 Pixmap GetPixmap(void) const;
91 void Dump(const char* pName);
94 _Buffer(const _Buffer& rhs);
95 _Buffer& operator =(const _Buffer& rhs);
96 void* GetBuffer(void);
97 void DeleteBuffer(void);
98 virtual void OnCreateBuffer(void);
99 virtual void OnDeleteBuffer(void);
100 virtual void* OnLockBuffer(void);
101 virtual void OnUnlockBuffer(void);
102 virtual void* OnGetBuffer(void);
108 Tizen::Graphics::Dimension __size;
109 _AppWidgetBuffer* __pAppWidgetBuffer;
115 XShmSegmentInfo __xShmSegmentInfo;
122 _GemBuffer(_AppWidgetBuffer* pAppWidgetBuffer);
123 virtual ~_GemBuffer(void);
126 _GemBuffer(const _GemBuffer& rhs);
127 _GemBuffer& operator =(const _GemBuffer& rhs);
128 void DeleteGemBuffer(void);
129 virtual void OnCreateBuffer(void);
130 virtual void OnDeleteBuffer(void);
131 virtual void* OnLockBuffer(void);
132 virtual void OnUnlockBuffer(void);
133 virtual void* OnGetBuffer(void);
136 DRI2Buffer* __pDri2Buffer;
137 Tizen::Graphics::Dimension __gemSize;
140 unsigned int __attachments[1];
143 void* __pCompensateBuffer;
146 Tizen::Graphics::Dimension __size;
150 struct _FileDescriptorDeleter
154 void operator()(int fileDescriptor)
156 close(fileDescriptor);
159 std::unique_ptr<int, _FileDescriptorDeleter> __dri2FileDescriptor;
161 struct _DisplayDeleter
163 void operator()(Display* pDisplay)
165 XCloseDisplay(pDisplay);
168 std::unique_ptr<Display, _DisplayDeleter> __pDisplay;
170 struct _TbmBufMgrDeleter
172 typedef tbm_bufmgr pointer;
174 void operator()(tbm_bufmgr pBufMgr)
176 tbm_bufmgr_deinit(pBufMgr);
179 std::unique_ptr<tbm_bufmgr, _TbmBufMgrDeleter> __pBufMgr;
180 std::unique_ptr<_Buffer> __pBuffer;
185 #endif // _FSHELL_INTERNAL_APPWIDGET_BUFFER_H_