using namespace std;
using namespace Tizen::Base;
using namespace Tizen::Graphics;
-//using namespace Tizen::Ui::Animations;
-//using namespace Tizen::Ui;
namespace Tizen { namespace Shell
{
}
_AppWidgetBuffer::_Buffer::_Buffer(_AppWidgetBuffer* pAppWidgetBuffer)
- : __allocated(false)
- , __locked(false)
+ : __locked(false)
, __pixmap(0)
, __depth(sizeof(int))
, __pAppWidgetBuffer(pAppWidgetBuffer)
, __gc(null)
, __pXImage(null)
{
+ __xShmSegmentInfo.shmseg = 0;
+ __xShmSegmentInfo.shmid = -1;
+ __xShmSegmentInfo.shmaddr = 0;
+ __xShmSegmentInfo.readOnly = False;
}
_AppWidgetBuffer::_Buffer::~_Buffer(void)
OnCreateBuffer();
- __allocated = true;
-
return LockBuffer();
}
_AppWidgetBuffer::_Buffer::DeallocBuffer(void)
{
OnDeleteBuffer();
-
- __allocated = false;
}
void*
void
_AppWidgetBuffer::_Buffer::DeleteBuffer(void)
{
- if (__allocated)
+ if (__pAppWidgetBuffer->__pDisplay.get())
{
- XFreeGC(__pAppWidgetBuffer->__pDisplay.get(), __gc);
- XShmDetach(__pAppWidgetBuffer->__pDisplay.get(), &__xShmSegmentInfo);
- XDestroyImage(__pXImage);
-
- if (__xShmSegmentInfo.shmaddr != (void *)-1)
+ if (__gc)
{
- shmdt(__xShmSegmentInfo.shmaddr);
- }
+ XFreeGC(__pAppWidgetBuffer->__pDisplay.get(), __gc);
+ XShmDetach(__pAppWidgetBuffer->__pDisplay.get(), &__xShmSegmentInfo);
- if (__xShmSegmentInfo.shmid >= 0)
- {
- shmctl(__xShmSegmentInfo.shmid, IPC_RMID, 0);
+ if (__pXImage)
+ {
+ XDestroyImage(__pXImage);
+ __pXImage = null;
+ }
+
+ if (__xShmSegmentInfo.shmaddr)
+ {
+ shmdt(__xShmSegmentInfo.shmaddr);
+ __xShmSegmentInfo.shmaddr = null;
+ }
+
+ if (__xShmSegmentInfo.shmid >= 0)
+ {
+ shmctl(__xShmSegmentInfo.shmid, IPC_RMID, 0);
+ __xShmSegmentInfo.shmid = -1;
+ }
+
+ __gc = null;
}
}
-
- __allocated = false;
}
void
if (__xShmSegmentInfo.shmaddr != (void *)-1)
{
shmdt(__xShmSegmentInfo.shmaddr);
+ __xShmSegmentInfo.shmaddr = null;
}
if (__xShmSegmentInfo.shmid >= 0)
{
shmctl(__xShmSegmentInfo.shmid, IPC_RMID, 0);
+ __xShmSegmentInfo.shmid = -1;
}
}