add missing FBIOGET_VSCREENINFO
[enigma2.git] / lib / gdi / gpixmap.cpp
index c3d2cc31b977ef844987e2595a02008b3ae3d724..96b599be60c8a26831781e29f278229c5c09e9e1 100644 (file)
@@ -106,7 +106,7 @@ gSurface::gSurface(eSize size, int _bpp, int accel)
        clut.data = 0;
 
        if (!data)
-               data = malloc(y * stride);
+               data = new unsigned char [y * stride];
        
        type = 1;
 }
@@ -118,9 +118,9 @@ gSurface::~gSurface()
                if (data_phys)
                        gAccel::getInstance()->accelFree(data_phys);
                else
-                       free(data);
+                       delete [] (unsigned char*)data;
 
-               delete[] clut.data;
+               delete [] clut.data;
        }
 }
 
@@ -538,13 +538,17 @@ DEFINE_REF(gPixmap);
 
 gPixmap::~gPixmap()
 {
+       if (must_delete_surface)
+               delete surface;
 }
 
-gPixmap::gPixmap(gSurface *surface): surface(surface)
+gPixmap::gPixmap(gSurface *surface)
+       :surface(surface), must_delete_surface(false)
 {
 }
 
 gPixmap::gPixmap(eSize size, int bpp, int accel)
+       :must_delete_surface(true)
 {
        surface = new gSurface(size, bpp, accel);
 }