Ignore:
Timestamp:
Aug 2, 2010, 9:27:30 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.3 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/openvg/qpixmapdata_vg.cpp

    r651 r769  
    4646#include "qvgimagepool_p.h"
    4747
    48 #ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE
     48#if defined(Q_OS_SYMBIAN)
    4949#include <private/qt_s60_p.h>
    5050#include <fbs.h>
    51 #include <graphics/sgimage.h>
     51#endif
     52#ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE
     53#include <sgresource/sgimage.h>
    5254typedef EGLImageKHR (*pfnEglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*);
    5355typedef EGLBoolean (*pfnEglDestroyImageKHR)(EGLDisplay, EGLImageKHR);
     
    353355}
    354356
    355 extern int qt_defaultDpiX();
    356 extern int qt_defaultDpiY();
     357Q_DECL_IMPORT extern int qt_defaultDpiX();
     358Q_DECL_IMPORT extern int qt_defaultDpiY();
    357359
    358360int QVGPixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const
     
    465467void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
    466468{
     469    if (type == QPixmapData::SgImage && pixmap) {
    467470#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
    468     if (type == QPixmapData::SgImage && pixmap) {
    469471        RSgImage *sgImage = reinterpret_cast<RSgImage*>(pixmap);
    470         // when "0" used as argument then
    471         // default display, context are used
    472         if (!context)
    473             context = qt_vg_create_context(0, QInternal::Pixmap);
    474472
    475473        destroyImages();
     
    478476        TInt err = 0;
    479477
    480         err = SgDriver::Open();
    481         if(err != KErrNone) {
     478        RSgDriver driver;
     479        err = driver.Open();
     480        if (err != KErrNone) {
    482481            cleanup();
    483482            return;
    484483        }
    485484
    486         if(sgImage->IsNull()) {
     485        if (sgImage->IsNull()) {
    487486            cleanup();
    488             SgDriver::Close();
     487            driver.Close();
    489488            return;
    490489        }
     
    492491        TSgImageInfo sgImageInfo;
    493492        err = sgImage->GetInfo(sgImageInfo);
    494         if(err != KErrNone) {
     493        if (err != KErrNone) {
    495494            cleanup();
    496             SgDriver::Close();
     495            driver.Close();
    497496            return;
    498497        }
     
    502501        pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR");
    503502
    504         if(eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
     503        if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
    505504            cleanup();
    506             SgDriver::Close();
     505            driver.Close();
    507506            return;
    508507        }
    509508
    510509        const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE};
    511         EGLImageKHR eglImage = eglCreateImageKHR(context->display(),
     510        EGLImageKHR eglImage = eglCreateImageKHR(QEglContext::display(),
    512511                EGL_NO_CONTEXT,
    513512                EGL_NATIVE_PIXMAP_KHR,
     
    515514                (EGLint*)KEglImageAttribs);
    516515
    517         if(eglGetError() != EGL_SUCCESS) {
     516        if (eglGetError() != EGL_SUCCESS) {
    518517            cleanup();
    519             SgDriver::Close();
     518            driver.Close();
    520519            return;
    521520        }
    522521
    523522        vgImage = vgCreateEGLImageTargetKHR(eglImage);
    524         if(vgGetError() != VG_NO_ERROR) {
     523        if (vgGetError() != VG_NO_ERROR) {
    525524            cleanup();
    526             eglDestroyImageKHR(context->display(), eglImage);
    527             SgDriver::Close();
     525            eglDestroyImageKHR(QEglContext::display(), eglImage);
     526            driver.Close();
    528527            return;
    529528        }
     
    538537        setSerialNumber(++qt_vg_pixmap_serial);
    539538        // release stuff
    540         eglDestroyImageKHR(context->display(), eglImage);
    541         SgDriver::Close();
     539        eglDestroyImageKHR(QEglContext::display(), eglImage);
     540        driver.Close();
     541#endif
    542542    } else if (type == QPixmapData::FbsBitmap) {
    543543        CFbsBitmap *bitmap = reinterpret_cast<CFbsBitmap*>(pixmap);
     
    585585            delete bitmap;
    586586    }
    587 #else
    588     Q_UNUSED(pixmap);
    589     Q_UNUSED(type);
    590 #endif
    591587}
    592588
    593589void* QVGPixmapData::toNativeType(NativeType type)
    594590{
     591    if (type == QPixmapData::SgImage) {
    595592#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
    596     if (type == QPixmapData::SgImage) {
    597593        toVGImage();
    598594
    599         if(!isValid() || vgImage == VG_INVALID_HANDLE)
     595        if (!isValid() || vgImage == VG_INVALID_HANDLE)
    600596            return 0;
    601597
    602598        TInt err = 0;
    603599
    604         err = SgDriver::Open();
    605         if(err != KErrNone)
     600        RSgDriver driver;
     601        err = driver.Open();
     602        if (err != KErrNone)
    606603            return 0;
    607604
     
    609606        sgInfo.iPixelFormat = EUidPixelFormatARGB_8888_PRE;
    610607        sgInfo.iSizeInPixels.SetSize(w, h);
    611         sgInfo.iUsage = ESgUsageOpenVgImage | ESgUsageOpenVgTarget;
    612         sgInfo.iShareable = ETrue;
    613         sgInfo.iCpuAccess = ESgCpuAccessNone;
    614         sgInfo.iScreenId = KSgScreenIdMain; //KSgScreenIdAny;
    615         sgInfo.iUserAttributes = NULL;
    616         sgInfo.iUserAttributeCount = 0;
     608        sgInfo.iUsage = ESgUsageBitOpenVgImage | ESgUsageBitOpenVgSurface;
    617609
    618610        RSgImage *sgImage = q_check_ptr(new RSgImage());
    619611        err = sgImage->Create(sgInfo, NULL, NULL);
    620         if(err != KErrNone) {
    621             SgDriver::Close();
     612        if (err != KErrNone) {
     613            driver.Close();
    622614            return 0;
    623615        }
     
    627619        pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR");
    628620
    629         if(eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
    630             SgDriver::Close();
     621        if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
     622            driver.Close();
    631623            return 0;
    632624        }
    633625
    634626        const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE};
    635         EGLImageKHR eglImage = eglCreateImageKHR(context->display(),
     627        EGLImageKHR eglImage = eglCreateImageKHR(QEglContext::display(),
    636628                EGL_NO_CONTEXT,
    637629                EGL_NATIVE_PIXMAP_KHR,
    638630                (EGLClientBuffer)sgImage,
    639631                (EGLint*)KEglImageAttribs);
    640         if(eglGetError() != EGL_SUCCESS) {
     632        if (eglGetError() != EGL_SUCCESS) {
    641633            sgImage->Close();
    642             SgDriver::Close();
     634            driver.Close();
    643635            return 0;
    644636        }
    645637
    646638        VGImage dstVgImage = vgCreateEGLImageTargetKHR(eglImage);
    647         if(vgGetError() != VG_NO_ERROR) {
    648             eglDestroyImageKHR(context->display(), eglImage);
     639        if (vgGetError() != VG_NO_ERROR) {
     640            eglDestroyImageKHR(QEglContext::display(), eglImage);
    649641            sgImage->Close();
    650             SgDriver::Close();
     642            driver.Close();
    651643            return 0;
    652644        }
     
    656648                w, h, VG_FALSE);
    657649
    658         if(vgGetError() != VG_NO_ERROR) {
     650        if (vgGetError() != VG_NO_ERROR) {
    659651            sgImage->Close();
    660652            sgImage = 0;
     
    662654        // release stuff
    663655        vgDestroyImage(dstVgImage);
    664         eglDestroyImageKHR(context->display(), eglImage);
    665         SgDriver::Close();
     656        eglDestroyImageKHR(QEglContext::display(), eglImage);
     657        driver.Close();
    666658        return reinterpret_cast<void*>(sgImage);
     659#endif
    667660    } else if (type == QPixmapData::FbsBitmap) {
    668661        CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap);
     
    686679        return reinterpret_cast<void*>(bitmap);
    687680    }
    688 #else
    689     Q_UNUSED(type);
    690681    return 0;
    691 #endif
    692682}
    693683#endif //Q_OS_SYMBIAN
Note: See TracChangeset for help on using the changeset viewer.