Changeset 767 for branches/vendor/nokia/qt/current/src/openvg
- Timestamp:
- Aug 2, 2010, 5:05:06 PM (15 years ago)
- Location:
- branches/vendor/nokia/qt/current/src/openvg
- Files:
-
- 6 edited
-
openvg.pro (modified) (1 diff)
-
qpaintengine_vg.cpp (modified) (20 diffs)
-
qpixmapdata_vg.cpp (modified) (14 diffs)
-
qwindowsurface_vg.cpp (modified) (2 diffs)
-
qwindowsurface_vgegl.cpp (modified) (12 diffs)
-
qwindowsurface_vgegl_p.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/vendor/nokia/qt/current/src/openvg/openvg.pro
r557 r767 34 34 } 35 35 36 37 36 38 include(../qbase.pri) 37 39 -
branches/vendor/nokia/qt/current/src/openvg/qpaintengine_vg.cpp
r649 r767 76 76 #if !defined(QVG_NO_DRAW_GLYPHS) 77 77 78 extern int qt_defaultDpiX();79 extern int qt_defaultDpiY();78 extern int qt_defaultDpiX(); 79 extern int qt_defaultDpiY(); 80 80 81 81 class QVGPaintEnginePrivate; … … 121 121 { 122 122 public: 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 123 152 QVGPaintEnginePrivate(); 124 153 ~QVGPaintEnginePrivate(); … … 218 247 #endif 219 248 249 250 220 251 QScopedPointer<QPixmapFilter> convolutionFilter; 221 252 QScopedPointer<QPixmapFilter> colorizeFilter; … … 370 401 fontEngineCleaner = 0; 371 402 #endif 403 404 372 405 373 406 clearModes(); … … 447 480 vgAppendPathData(linePath, 2, segments, coords); 448 481 #endif 482 483 484 485 449 486 } 450 487 … … 497 534 } 498 535 499 extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale);536 extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale); 500 537 501 538 void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev) 502 539 { 503 VGfloat devh = pdev->height() - 1;540 VGfloat devh = pdev->height(); 504 541 505 542 // Construct the VG transform by combining the Qt transform with 506 543 // the following viewport transformation: 507 // | 1 0 0 | | 1 0 0.5 | | 1 0 0.5 |508 // | 0 -1 devh | * | 0 1 -0.5 | = | 0 -1 (0.5 + devh) |509 // | 0 0 1 | | 0 0 1 | | 0 0 1 |544 // | 1 0 0 | 545 // | 0 -1 devh | 546 // | 0 0 1 | 510 547 // The full VG transform is effectively: 511 548 // 1. Apply the user's transformation matrix. 512 // 2. Translate by (0.5, -0.5) to correct for Qt and VG putting 513 // the centre of the pixel at different positions. 514 // 3. Flip the co-ordinate system upside down. 549 // 2. Flip the co-ordinate system upside down. 515 550 QTransform viewport(1.0f, 0.0f, 0.0f, 516 551 0.0f, -1.0f, 0.0f, 517 0.5f, devh + 0.5f, 1.0f); 518 519 // The image transform is always the full transformation, 520 // because it can be projective. 521 imageTransform = transform * viewport; 522 523 // Determine if the transformation is projective. 524 bool projective = (imageTransform.m13() != 0.0f || 525 imageTransform.m23() != 0.0f || 526 imageTransform.m33() != 1.0f); 552 0.0f, devh, 1.0f); 553 554 // Compute the path transform and determine if it is projective. 555 pathTransform = transform * viewport; 556 bool projective = (pathTransform.m13() != 0.0f || 557 pathTransform.m23() != 0.0f || 558 pathTransform.m33() != 1.0f); 527 559 if (projective) { 528 560 // The engine cannot do projective path transforms for us, … … 532 564 simpleTransform = false; 533 565 } else { 534 pathTransform = imageTransform;535 566 simpleTransform = true; 536 567 } 537 568 pathTransformSet = false; 569 570 571 538 572 539 573 // Calculate the scaling factor to use for turning cosmetic pens … … 968 1002 } 969 1003 970 extern QImage qt_imageForBrush(int style, bool invert);1004 extern QImage qt_imageForBrush(int style, bool invert); 971 1005 972 1006 static QImage colorizeBitmap(const QImage &image, const QColor &color) … … 2063 2097 (QVGPaintEngine *engine, int width, int height) 2064 2098 { 2099 2065 2100 if (maskIsSet) { 2066 2101 vgMask(VG_INVALID_HANDLE, VG_FILL_MASK, 0, 0, width, height); … … 2295 2330 d->dirty |= QPaintEngine::DirtyCompositionMode; 2296 2331 2297 VG BlendModevgMode = VG_BLEND_SRC_OVER;2332 VG vgMode = VG_BLEND_SRC_OVER; 2298 2333 2299 2334 switch (state()->composition_mode) { … … 2329 2364 break; 2330 2365 default: 2331 qWarning() << "QVGPaintEngine::compositionModeChanged unsupported mode" << state()->composition_mode; 2332 break; // Fall back to VG_BLEND_SRC_OVER. 2333 } 2334 2335 d->setBlendMode(vgMode); 2366 if (d->hasAdvancedBlending) { 2367 switch (state()->composition_mode) { 2368 case QPainter::CompositionMode_Overlay: 2369 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_OVERLAY_KHR; 2370 break; 2371 case QPainter::CompositionMode_ColorDodge: 2372 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_COLORDODGE_KHR; 2373 break; 2374 case QPainter::CompositionMode_ColorBurn: 2375 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_COLORBURN_KHR; 2376 break; 2377 case QPainter::CompositionMode_HardLight: 2378 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_HARDLIGHT_KHR; 2379 break; 2380 case QPainter::CompositionMode_SoftLight: 2381 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_SOFTLIGHT_KHR; 2382 break; 2383 case QPainter::CompositionMode_Difference: 2384 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_DIFFERENCE_KHR; 2385 break; 2386 case QPainter::CompositionMode_Exclusion: 2387 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_EXCLUSION_KHR; 2388 break; 2389 case QPainter::CompositionMode_SourceOut: 2390 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_SRC_OUT_KHR; 2391 break; 2392 case QPainter::CompositionMode_DestinationOut: 2393 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_DST_OUT_KHR; 2394 break; 2395 case QPainter::CompositionMode_SourceAtop: 2396 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_SRC_ATOP_KHR; 2397 break; 2398 case QPainter::CompositionMode_DestinationAtop: 2399 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_DST_ATOP_KHR; 2400 break; 2401 case QPainter::CompositionMode_Xor: 2402 vgMode = QVGPaintEnginePrivate::QT_VG_BLEND_XOR_KHR; 2403 break; 2404 default: break; // Fall back to VG_BLEND_SRC_OVER. 2405 } 2406 } 2407 if (vgMode == VG_BLEND_SRC_OVER) 2408 qWarning() << "QVGPaintEngine::compositionModeChanged unsupported mode" << state()->composition_mode; 2409 break; 2410 } 2411 2412 d->setBlendMode(VGBlendMode(vgMode)); 2336 2413 } 2337 2414 … … 2400 2477 2401 2478 // Check to see if we can use vgClear() for faster filling. 2402 if (brush.style() == Qt::SolidPattern && 2479 if (brush.style() == Qt::SolidPattern && 2403 2480 clipTransformIsSimple(d->transform) && d->opacity == 1.0f && 2404 2481 clearRect(rect, brush.color())) { … … 2443 2520 2444 2521 // Check to see if we can use vgClear() for faster filling. 2445 if (clipTransformIsSimple(d->transform) && d->opacity == 1.0f && 2522 if (clipTransformIsSimple(d->transform) && d->opacity == 1.0f && 2446 2523 clearRect(rect, color)) { 2447 2524 return; … … 3240 3317 } 3241 3318 } 3242 origin[0] = -metrics.x.toReal() + 0.5f;3243 origin[1] = -metrics.y.toReal() + 0.5f;3244 escapement[0] = metrics.xoff.toReal();3245 escapement[1] = metrics.yoff.toReal();3319 origin[0] = -metrics.x.toReal(); 3320 origin[1] = -metrics.y.toReal(); 3321 escapement[0] = ; 3322 escapement[1] = ; 3246 3323 vgSetGlyphToImage(font, glyph, vgImage, origin, escapement); 3247 3324 vgDestroyImage(vgImage); // Reduce reference count. … … 3259 3336 origin[0] = 0; 3260 3337 origin[1] = 0; 3261 escapement[0] = metrics.xoff.toReal();3262 escapement[1] = metrics.yoff.toReal();3338 escapement[0] = ; 3339 escapement[1] = ; 3263 3340 vgSetGlyphToPath(font, glyph, vgPath, VG_FALSE, origin, escapement); 3264 3341 vgDestroyPath(vgPath); // Reduce reference count. … … 3285 3362 QVarLengthArray<QFixedPoint> positions; 3286 3363 QVarLengthArray<glyph_t> glyphs; 3287 QTransform matrix = d->transform; 3288 matrix.translate(p.x(), p.y()); 3289 ti.fontEngine->getGlyphPositions 3290 (ti.glyphs, matrix, ti.flags, glyphs, positions); 3364 QTransform matrix; 3365 ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions); 3291 3366 3292 3367 // Find the glyph cache for this font. … … 3322 3397 glyphCache->cacheGlyphs(d, ti, glyphs); 3323 3398 3399 3400 3401 3402 3403 3404 3405 3406 3324 3407 // Set the glyph drawing origin. 3325 3408 VGfloat origin[2]; 3326 origin[0] = 0;3327 origin[1] = 0;3409 origin[0] = ; 3410 origin[1] = ; 3328 3411 vgSetfv(VG_GLYPH_ORIGIN, 2, origin); 3329 3412 … … 3340 3423 d->ensureBrush(state()->pen.brush()); 3341 3424 vgDrawGlyphs(glyphCache->font, glyphs.size(), (VGuint*)glyphs.data(), 3342 NULL, NULL, VG_FILL_PATH, VG_TRUE);3425 , VG_FILL_PATH, VG_TRUE); 3343 3426 #else 3344 3427 // OpenGL 1.0 does not have support for VGFont and glyphs, … … 3645 3728 } else { 3646 3729 // Set the path transform to the default viewport transformation. 3647 VGfloat devh = screenSize.height() - 1;3730 VGfloat devh = screenSize.height(); 3648 3731 QTransform viewport(1.0f, 0.0f, 0.0f, 3649 3732 0.0f, -1.0f, 0.0f, 3650 -0.5f, devh + 0.5f, 1.0f);3733 , 1.0f); 3651 3734 d->setTransform(VG_MATRIX_PATH_USER_TO_SURFACE, viewport); 3652 3735 … … 3684 3767 3685 3768 // Set the image transformation and modes. 3686 VGfloat devh = screenSize.height() - 1;3769 VGfloat devh = screenSize.height(); 3687 3770 QTransform transform(1.0f, 0.0f, 0.0f, 3688 3771 0.0f, -1.0f, 0.0f, 3689 -0.5f, devh + 0.5f, 1.0f);3772 , 1.0f); 3690 3773 transform.translate(offset.x(), offset.y()); 3691 3774 d->setTransform(VG_MATRIX_IMAGE_USER_TO_SURFACE, transform); -
branches/vendor/nokia/qt/current/src/openvg/qpixmapdata_vg.cpp
r649 r767 46 46 #include "qvgimagepool_p.h" 47 47 48 #if def QT_SYMBIAN_SUPPORTS_SGIMAGE48 #if 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 extern int qt_defaultDpiX(); 358 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 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 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 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 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(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 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(display(), eglImage); 526 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 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 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 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(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 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(display(), eglImage); 649 641 sgImage->Close(); 650 SgDriver::Close();642 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(display(), eglImage); 657 Close(); 666 658 return reinterpret_cast<void*>(sgImage); 659 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 -
branches/vendor/nokia/qt/current/src/openvg/qwindowsurface_vg.cpp
r649 r767 58 58 // Create the default type of EGL window surface for windows. 59 59 d_ptr = new QVGEGLWindowSurfaceDirect(this); 60 60 61 } 61 62 … … 90 91 bool QVGWindowSurface::scroll(const QRegion &area, int dx, int dy) 91 92 { 92 return QWindowSurface::scroll(area, dx, dy); 93 if (!d_ptr->scroll(window(), area, dx, dy)) 94 return QWindowSurface::scroll(area, dx, dy); 95 return true; 93 96 } 94 97 -
branches/vendor/nokia/qt/current/src/openvg/qwindowsurface_vgegl.cpp
r649 r767 178 178 } else { 179 179 QVGSharedContext *shared = sharedContext(); 180 shared->firstPixmap = pd->next; 180 if (shared) 181 shared->firstPixmap = pd->next; 181 182 } 182 183 } … … 226 227 context = new QEglContext(); 227 228 context->setApi(QEgl::OpenVG); 228 if (!context->openDisplay(device)) {229 delete context;230 return 0;231 }232 229 233 230 // Set the swap interval for the display. 234 231 QByteArray interval = qgetenv("QT_VG_SWAP_INTERVAL"); 235 232 if (!interval.isEmpty()) 236 eglSwapInterval( context->display(), interval.toInt());233 eglSwapInterval(display(), interval.toInt()); 237 234 else 238 eglSwapInterval( context->display(), 1);235 eglSwapInterval(display(), 1); 239 236 240 237 #ifdef EGL_RENDERABLE_TYPE … … 250 247 EGLConfig cfg; 251 248 if (eglChooseConfig 252 ( context->display(), properties, &cfg, 1, &matching) &&249 (display(), properties, &cfg, 1, &matching) && 253 250 matching > 0) { 254 251 // Check that the selected configuration actually supports OpenVG … … 257 254 EGLint type = 0; 258 255 eglGetConfigAttrib 259 ( context->display(), cfg, EGL_CONFIG_ID, &id);256 (display(), cfg, EGL_CONFIG_ID, &id); 260 257 eglGetConfigAttrib 261 ( context->display(), cfg, EGL_RENDERABLE_TYPE, &type);258 (display(), cfg, EGL_RENDERABLE_TYPE, &type); 262 259 if (cfgId == id && (type & EGL_OPENVG_BIT) != 0) { 263 260 context->setConfig(cfg); … … 338 335 shared->context->doneCurrent(); 339 336 if (shared->surface != EGL_NO_SURFACE) { 340 eglDestroySurface( shared->context->display(), shared->surface);337 eglDestroySurface(display(), shared->surface); 341 338 shared->surface = EGL_NO_SURFACE; 342 339 } … … 416 413 } 417 414 shared->surface = eglCreatePbufferSurface 418 ( shared->context->display(), shared->context->config(), attribs);415 (display(), shared->context->config(), attribs); 419 416 } 420 417 return shared->surface; … … 559 556 recreateBackBuffer = false; 560 557 if (backBufferSurface != EGL_NO_SURFACE) { 561 eglDestroySurface( context->display(), backBufferSurface);558 eglDestroySurface(display(), backBufferSurface); 562 559 backBufferSurface = EGL_NO_SURFACE; 563 560 } … … 572 569 // Create an EGL surface for rendering into the VGImage. 573 570 backBufferSurface = eglCreatePbufferFromClientBuffer 574 ( context->display(), EGL_OPENVG_IMAGE,571 (display(), EGL_OPENVG_IMAGE, 575 572 (EGLClientBuffer)(backBuffer), 576 573 context->config(), NULL); … … 663 660 windowSurface = context->createSurface(widget, &surfaceProps); 664 661 isPaintingActive = false; 662 665 663 } 666 664 #else … … 708 706 // Did we get a direct to window rendering surface? 709 707 EGLint buffer = 0; 710 if (eglQueryContext( context->display(), context->context(),708 if (eglQueryContext(display(), context->context(), 711 709 EGL_RENDER_BUFFER, &buffer) && 712 710 buffer == EGL_SINGLE_BUFFER) { … … 714 712 } 715 713 #endif 716 #if !defined(QVG_NO_PRESERVED_SWAP)717 // Try to force the surface back buffer to preserve its contents.718 if (needToSwap) {719 eglGetError(); // Clear error state first.720 eglSurfaceAttrib(context->display(), surface,721 EGL_SWAP_BEHAVIOR, EGL_BUFFER_PRESERVED);722 if (eglGetError() != EGL_SUCCESS) {723 qWarning("QVG: could not enable preserved swap");724 }725 }726 #endif727 714 windowSurface = surface; 728 715 isPaintingActive = false; 729 716 } 717 718 719 720 721 722 723 724 725 726 727 728 730 729 return context; 731 730 } … … 760 759 } 761 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 762 788 QT_END_NAMESPACE 763 789 -
branches/vendor/nokia/qt/current/src/openvg/qwindowsurface_vgegl_p.h
r649 r767 78 78 virtual VGImage surfaceImage() const; 79 79 virtual QSize surfaceSize() const = 0; 80 81 80 82 81 83 private: … … 129 131 void endPaint(QWidget *widget, const QRegion& region, QImage *image); 130 132 QSize surfaceSize() const { return size; } 133 134 131 135 132 136 protected:
Note:
See TracChangeset
for help on using the changeset viewer.
