2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file FShell_AppWidgetBuffer.h
19 * @brief This is the header file for the _AppWidgetBuffer class.
21 * This header file contains the declarations of the %_AppWidgetBuffer class.
23 #ifndef _FSHELL_INTERNAL_APPWIDGET_BUFFER_H_
24 #define _FSHELL_INTERNAL_APPWIDGET_BUFFER_H_
26 #include <unique_ptr.h>
30 #include <X11/extensions/XShm.h>
31 #include <X11/Xutil.h>
32 #include <X11/Xproto.h>
33 #include <X11/extensions/Xdamage.h>
34 #include <X11/extensions/Xfixes.h>
37 #include <xf86drmMode.h>
38 #include <tbm_bufmgr.h>
40 #include <FBaseDataType.h>
41 #include <FGrpDimension.h>
42 #include <FGrpFloatDimension.h>
44 namespace Tizen { namespace Graphics
49 namespace Tizen { namespace Shell
53 * @class _AppWidgetBuffer
57 class _AppWidgetBuffer
60 _AppWidgetBuffer(void);
61 ~_AppWidgetBuffer(void);
63 void Initialize(void);
64 void* AllocBuffer(Pixmap pixmap, const Tizen::Graphics::FloatDimension& size);
65 void DeallocBuffer(void);
66 void* LockBuffer(void);
67 void UnlockBuffer(void);
68 bool IsGemBufferEnabled(void) const;
69 Display* GetDisplay(void) const;
71 XImage* GetXImage(void) const;
74 _AppWidgetBuffer(const _AppWidgetBuffer& rhs);
75 _AppWidgetBuffer& operator =(const _AppWidgetBuffer& rhs);
81 _Buffer(_AppWidgetBuffer* pAppWidgetBuffer);
82 virtual ~_Buffer(void);
83 void* AllocBuffer(Pixmap pixmap, const Tizen::Graphics::FloatDimension& size);
84 void DeallocBuffer(void);
85 void* LockBuffer(void);
86 void UnlockBuffer(void);
88 XImage* GetXImage(void) const;
91 _Buffer(const _Buffer& rhs);
92 _Buffer& operator =(const _Buffer& rhs);
93 void DeleteBuffer(void);
94 virtual void OnCreateBuffer(void);
95 virtual void OnDeleteBuffer(void);
96 virtual void* OnLockBuffer(void);
97 virtual void OnUnlockBuffer(void);
104 Tizen::Graphics::FloatDimension __size;
105 _AppWidgetBuffer* __pAppWidgetBuffer;
110 XShmSegmentInfo __xShmSegmentInfo;
117 _GemBuffer(_AppWidgetBuffer* pAppWidgetBuffer);
118 virtual ~_GemBuffer(void);
121 _GemBuffer(const _GemBuffer& rhs);
122 _GemBuffer& operator =(const _GemBuffer& rhs);
123 void DeleteGemBuffer(void);
124 virtual void OnCreateBuffer(void);
125 virtual void OnDeleteBuffer(void);
126 virtual void* OnLockBuffer(void);
127 virtual void OnUnlockBuffer(void);
130 DRI2Buffer* __pDri2Buffer;
131 Tizen::Graphics::Dimension __gemSize;
134 unsigned int __attachments[1];
137 void* __pCompensateBuffer;
140 Tizen::Graphics::FloatDimension __size;
144 struct _FileDescriptorDeleter
148 void operator()(int fileDescriptor)
150 close(fileDescriptor);
153 std::unique_ptr<int, _FileDescriptorDeleter> __dri2FileDescriptor;
155 struct _DisplayDeleter
157 void operator()(Display* pDisplay)
159 XCloseDisplay(pDisplay);
162 std::unique_ptr<Display, _DisplayDeleter> __pDisplay;
164 struct _TbmBufMgrDeleter
166 typedef tbm_bufmgr pointer;
168 void operator()(tbm_bufmgr pBufMgr)
170 tbm_bufmgr_deinit(pBufMgr);
173 std::unique_ptr<tbm_bufmgr, _TbmBufMgrDeleter> __pBufMgr;
174 std::unique_ptr<_Buffer> __pBuffer;
179 #endif // _FSHELL_INTERNAL_APPWIDGET_BUFFER_H_