Changeset 769 for trunk/src/openvg/qpixmapdata_vg.cpp
- Timestamp:
- Aug 2, 2010, 9:27:30 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.6.3 (added) merged: 768 /branches/vendor/nokia/qt/current merged: 767 /branches/vendor/nokia/qt/4.6.2 removed
- Property svn:mergeinfo changed
-
trunk/src/openvg/qpixmapdata_vg.cpp
r651 r769 46 46 #include "qvgimagepool_p.h" 47 47 48 #if def QT_SYMBIAN_SUPPORTS_SGIMAGE48 #if defined(Q_OS_SYMBIAN) 49 49 #include <private/qt_s60_p.h> 50 50 #include <fbs.h> 51 #include <graphics/sgimage.h> 51 #endif 52 #ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE 53 #include <sgresource/sgimage.h> 52 54 typedef EGLImageKHR (*pfnEglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*); 53 55 typedef EGLBoolean (*pfnEglDestroyImageKHR)(EGLDisplay, EGLImageKHR); … … 353 355 } 354 356 355 extern int qt_defaultDpiX();356 extern int qt_defaultDpiY();357 Q_DECL_IMPORT extern int qt_defaultDpiX(); 358 Q_DECL_IMPORT extern int qt_defaultDpiY(); 357 359 358 360 int QVGPixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const … … 465 467 void QVGPixmapData::fromNativeType(void* pixmap, NativeType type) 466 468 { 469 if (type == QPixmapData::SgImage && pixmap) { 467 470 #if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) 468 if (type == QPixmapData::SgImage && pixmap) {469 471 RSgImage *sgImage = reinterpret_cast<RSgImage*>(pixmap); 470 // when "0" used as argument then471 // default display, context are used472 if (!context)473 context = qt_vg_create_context(0, QInternal::Pixmap);474 472 475 473 destroyImages(); … … 478 476 TInt err = 0; 479 477 480 err = SgDriver::Open(); 481 if(err != KErrNone) { 478 RSgDriver driver; 479 err = driver.Open(); 480 if (err != KErrNone) { 482 481 cleanup(); 483 482 return; 484 483 } 485 484 486 if (sgImage->IsNull()) {485 if (sgImage->IsNull()) { 487 486 cleanup(); 488 SgDriver::Close();487 driver.Close(); 489 488 return; 490 489 } … … 492 491 TSgImageInfo sgImageInfo; 493 492 err = sgImage->GetInfo(sgImageInfo); 494 if (err != KErrNone) {493 if (err != KErrNone) { 495 494 cleanup(); 496 SgDriver::Close();495 driver.Close(); 497 496 return; 498 497 } … … 502 501 pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); 503 502 504 if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {503 if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) { 505 504 cleanup(); 506 SgDriver::Close();505 driver.Close(); 507 506 return; 508 507 } 509 508 510 509 const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; 511 EGLImageKHR eglImage = eglCreateImageKHR( context->display(),510 EGLImageKHR eglImage = eglCreateImageKHR(QEglContext::display(), 512 511 EGL_NO_CONTEXT, 513 512 EGL_NATIVE_PIXMAP_KHR, … … 515 514 (EGLint*)KEglImageAttribs); 516 515 517 if (eglGetError() != EGL_SUCCESS) {516 if (eglGetError() != EGL_SUCCESS) { 518 517 cleanup(); 519 SgDriver::Close();518 driver.Close(); 520 519 return; 521 520 } 522 521 523 522 vgImage = vgCreateEGLImageTargetKHR(eglImage); 524 if (vgGetError() != VG_NO_ERROR) {523 if (vgGetError() != VG_NO_ERROR) { 525 524 cleanup(); 526 eglDestroyImageKHR( context->display(), eglImage);527 SgDriver::Close();525 eglDestroyImageKHR(QEglContext::display(), eglImage); 526 driver.Close(); 528 527 return; 529 528 } … … 538 537 setSerialNumber(++qt_vg_pixmap_serial); 539 538 // release stuff 540 eglDestroyImageKHR(context->display(), eglImage); 541 SgDriver::Close(); 539 eglDestroyImageKHR(QEglContext::display(), eglImage); 540 driver.Close(); 541 #endif 542 542 } else if (type == QPixmapData::FbsBitmap) { 543 543 CFbsBitmap *bitmap = reinterpret_cast<CFbsBitmap*>(pixmap); … … 585 585 delete bitmap; 586 586 } 587 #else588 Q_UNUSED(pixmap);589 Q_UNUSED(type);590 #endif591 587 } 592 588 593 589 void* QVGPixmapData::toNativeType(NativeType type) 594 590 { 591 if (type == QPixmapData::SgImage) { 595 592 #if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) 596 if (type == QPixmapData::SgImage) {597 593 toVGImage(); 598 594 599 if (!isValid() || vgImage == VG_INVALID_HANDLE)595 if (!isValid() || vgImage == VG_INVALID_HANDLE) 600 596 return 0; 601 597 602 598 TInt err = 0; 603 599 604 err = SgDriver::Open(); 605 if(err != KErrNone) 600 RSgDriver driver; 601 err = driver.Open(); 602 if (err != KErrNone) 606 603 return 0; 607 604 … … 609 606 sgInfo.iPixelFormat = EUidPixelFormatARGB_8888_PRE; 610 607 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; 617 609 618 610 RSgImage *sgImage = q_check_ptr(new RSgImage()); 619 611 err = sgImage->Create(sgInfo, NULL, NULL); 620 if (err != KErrNone) {621 SgDriver::Close();612 if (err != KErrNone) { 613 driver.Close(); 622 614 return 0; 623 615 } … … 627 619 pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); 628 620 629 if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {630 SgDriver::Close();621 if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) { 622 driver.Close(); 631 623 return 0; 632 624 } 633 625 634 626 const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; 635 EGLImageKHR eglImage = eglCreateImageKHR( context->display(),627 EGLImageKHR eglImage = eglCreateImageKHR(QEglContext::display(), 636 628 EGL_NO_CONTEXT, 637 629 EGL_NATIVE_PIXMAP_KHR, 638 630 (EGLClientBuffer)sgImage, 639 631 (EGLint*)KEglImageAttribs); 640 if (eglGetError() != EGL_SUCCESS) {632 if (eglGetError() != EGL_SUCCESS) { 641 633 sgImage->Close(); 642 SgDriver::Close();634 driver.Close(); 643 635 return 0; 644 636 } 645 637 646 638 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); 649 641 sgImage->Close(); 650 SgDriver::Close();642 driver.Close(); 651 643 return 0; 652 644 } … … 656 648 w, h, VG_FALSE); 657 649 658 if (vgGetError() != VG_NO_ERROR) {650 if (vgGetError() != VG_NO_ERROR) { 659 651 sgImage->Close(); 660 652 sgImage = 0; … … 662 654 // release stuff 663 655 vgDestroyImage(dstVgImage); 664 eglDestroyImageKHR( context->display(), eglImage);665 SgDriver::Close();656 eglDestroyImageKHR(QEglContext::display(), eglImage); 657 driver.Close(); 666 658 return reinterpret_cast<void*>(sgImage); 659 #endif 667 660 } else if (type == QPixmapData::FbsBitmap) { 668 661 CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap); … … 686 679 return reinterpret_cast<void*>(bitmap); 687 680 } 688 #else689 Q_UNUSED(type);690 681 return 0; 691 #endif692 682 } 693 683 #endif //Q_OS_SYMBIAN
Note:
See TracChangeset
for help on using the changeset viewer.