| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
| |
Reviewed-by: Trust Me
(cherry picked from commit ac5c099cc3c5b8c7eec7a49fdeb8a21037230350)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change 532115bcaa370af827a5cbad017b272842c5aacf introduced a regression
by fixing a typo in the QT_OPENGL_ES_2 macro. This caused a broken
and untested code path to be used in the GLES2 case. Since the QImage
scanlines are 32 bit aligned, QImage::width() cannot be used when
copying the data. Rather than pass in bytesPerLine() to the GL function,
I opted to revert to the proven behavior, where the pad bytes are never
read by GL but each scanline is copied separately, to avoid further
regressions on different hardware. This also seems like the more correct
approach, as the pad bytes should ideally not be copied into the cache
texture.
Reviewed-by: Samuel
(cherry picked from commit 7a54885b1df9baf793374e3cb9fdf8be93ee7c80)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It seems that copying small rectangles from glTexSubImage2D into a
texture which is 2048x2048 is busted on some SGX drivers, even though
the driver reports 2048 as the maximum texture size. This caused text to
turn into flickering garbage once the texture glyph cache had grown to
its max size (e.g. when painting very many Chinese glyphs.) To work
around the problem, we hardcore the maximum texture height to 1024 on
this driver so that the texture glyph cache is reset whenever that
size is exceeded.
Task-number: QT-3971
Done-with: Samuel
|
|
|
|
|
|
|
|
|
|
| |
When the glyph cache is cleared because the max texture size has been
exceeded, we shouldn't delete the fbo as this is only created in
setContext() and will thus not be recreated. All subsequent resizing
of the cache will fail.
Task-number: QT-3971
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
| |
Down-scale images or pixmaps that are above the max texture size. Not
optimal performance-wise, but better than failing.
Task-number: QTBUG-16033
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since scaled text is backed by an A8 glyph cache, it needs to repopulate
even if it has previously populated the cache for the unscaled text.
This means that we need to record in the userData that the type of the
cache is not the same as the last time. Otherwise the A8 version of the
cache will only be updated when it's created and when the text actually
changes, leading to glyphs missing on screen when zooming text using
a scale.
Task-number: QTBUG-16012
Reviewed-by: Gunnar
|
|
|
|
|
|
|
|
| |
As long as the final clip area is rectangular and axis aligned we can
use a scissor clip. This prevents performance problems when doing
90-degree rotated rectangle clips.
Reviewed-by: Bjørn Erik Nilsen
|
|
|
|
|
|
| |
If we recreate the texture glyph cache, we also need to repopulate.
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When there is no transformation on a glyph in the GL texture glyph
cache, it will take the RGB code path to support subpixel antialiasing.
In this code path we would ask glTextImage2D() to convert from a
GL_ALPHA buffer to an internal format of GL_RGBA. This is not supported
on OpenGL ES 2, and would cause missing text for some drivers.
The change also fixes a typo in an #ifdef.
Task-number: QTBUG-15789
Reviewed-by: Kim
|
|
|
|
| |
Reviewed-by: Jani Hautakangas
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public: (21 commits)
Fixed handling of QInputMethodEvents with nonzero replacementLength.
Fixed namespace issues related to epocroot.cpp
Corrected ASCII comparison and removed extra braces
Add symbian scope for qfiledialog_symbian.cpp
Resolve EPOCROOT in qt.conf using same logic as in .pro
Make epocroot resolving compatible with more build environments
Fix for QtOpenGL RVCT4 compilation error
Removed extra cpp and done changes based on comments
Correct flags for Symbian file dialogs
Fix for WServ 64 crash on Symbian.
Use include(original mkspec) instead of copying of mkspec to default
Fixed code style of d92cbfc5, reported by git push.
Switched qdesktopservices to use SchemeHandler for Symbian^3 and later.
Removed unnecessary Q_OS_SYMBIAN flags from qdesktopservices_s60.cpp.
Documented usage of dialogs on Symbian
Native file dialog on Symbian^3
Add Location as self signable capability in patch_capabilities.pl
Localize .loc and .pkg content based on TRANSLATIONS
Bump Qt version to 4.7.2.
SSL: Fix for systemCaCertificates being called first on symbian
...
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
RVCT4 has strict lookup rules. Calls from function
,that depends on a template parameter, to internal
static functions must be qualified.
Task-number: QTBUG-15424
Reviewed-by: Jason Barron
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When the OpenGL glyph cache filled up (the max texture size on the
hardware was exceeded) the characters would be drawn as black blocks
instead. As a work-around for this, the cache will now be cleared and
repopulated whenever this happens, meaning that once in a while (when
a lot of different glyphs have been drawn in a font) there will be a
performance hit. A more complete solution is described in QTBUG-13784,
but this requires so much refactoring that it was deemed too risky for
a patch release. This patch fixes the problem with a small penalty
and low risk.
Task-number: QT-3971
Reviewed-by: Samuel
|
| |
| |
| |
| |
| | |
Task-number: QTBUG-15320
Reviewed-by: Kim
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If you create/destroy gl contexts a lot, you may sometimes get a new
context with the same pointer as a destroyed context. When you look up
the glyph cache in the font engine using the context pointer as a key,
you will then get a glyph cache which contains no valid data. We need
to reset the glyph cache completely in this case and set up bindings for
the new context so that the glyph cache can be repopulated and reused.
Note that there is a different solution for this in Qt 4.8, so this is
temporary solution for the Qt 4.7.x series.
Task-number: QT-4162
Reviewed-by: Fabien Freling
|
|
|
|
|
|
|
| |
For platforms where the driver bug isn't fixed, the work-around should
be done by packagers instead.
Reviewed-by: Gunnar Sletta
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1:
remove pointless assignment of deprecated variable
fix tst_headers
Fixed a shell syntax error in configure
Clear X11 structure before use
Make operator QRectF const
Fix GC-related crash in QScriptValue::setData()
get rid of dependency on QtGui
Removed implicity QtGui linking from icd.pro as it is not needed.
DFB: Make sure QPixmap::hasAlpha is respected
fix build on mingw
Fix some painting issues in QDirectFBPaintEngine
QNAM: Do not need QNetworkSession in AlwaysCache load mode
Don't crash if QScriptClass property getter returns an invalid value
QNAM: Remove dead waitForUpstreamBytesWritten() code
QNAM: Remove dead waitForDownstreamReadyRead() code
fix memleak in test
|
| |
| |
| |
| |
| |
| |
| | |
This allows us to convert a QGLRect to a QRectF also in const functions.
Function is inline and private, no ABI break.
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
| | |
|
|\ \
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2:
More fix for QTBUG-14640:oci performance problem with qlonglong
Doc: Fixing typo
Fixed grabWidget sometimes returning uninitialized memory.
Fix Malayalam Rendering - 'Ra' is PreBase
Update .def files for QtGui and QtOpenVG
Use 32bit textures for alpha textures after all.
One more fix for dithering.
Doc: Fixing typo
Fix QTBUG-14640:oci performance problem with qlonglong
32bit => 16bit conversion has 4byte-aligned output.
Fix gcc bug in qReallocAligned
Prevented threading related crash in OpenGL module.
Fix possible crash in QStaticText and QDeclarativeTextLayout
Fix QTBUG-14132 oracle (xe) stored procedures with bind variables get errors
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The QStaticTextItem held an uncounted reference to QFontEngine. The
pointer would dangle in some cases where there was no font object
referencing the engine and the cache was cleaned out (e.g. when a
new application font is added.) Properly count the reference, and also
add reference counting to userData to make it harder to shoot yourself
in the foot, since the QStaticTextItem class is now being used in
different places,
Task-number: QTBUG-14446
Reviewed-by: Martin Jones
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
QGL2PEXVertexArray::addClosingLine() uses using QDataBuffer::add() to
add a QPointF at the end, with a const reference to another value in
the same array. As add() resizes and possibly relocates the buffer, an
already-released memory location may be accessed.
This change copies the value into a temporary variable before resizing
the array.
Task-number: QTBUG-14944
Reviewed-by: Samuel
|
| |
|
|
|
|
|
|
| |
This is needed for RVCT4
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
| |
GL_OES_element_index_uint detection was not working because
EGL config wasn't yet resolved. In addition QFrameBufferObject
should use 24bit depth render buffer if extension is available.
Task-number: QTBUG-14542
Reviewed-by: Gunnar
|
|
|
|
|
|
|
|
|
|
|
| |
This is a backport of 3874cd95e203da40d5205ef6455d7f56cba6923a which
was committed to qt:master. Since the patch that originally exposed
the bug was added to 4.7.2, this patch is required there as well.
Bug is visible when resizing the glyph cache on devices where
QGLContext::brokenFBOReadback defaults to true, or by setting this to
true on desktop.
Reviewed-by: Gunnar
|
|
|
|
|
|
|
|
|
|
| |
On OSX AssertMacros.h header has macro called verify() and
QRBTree::verify() function was substituted by this macro.
On Windows/Mingw includes need to point to exported private
include folder.
Reviewed-by: Kim
|
|
|
|
|
|
| |
for some reason rvct didn't catch that.
Reviewed-by: TRUSTME
|
|
|
|
|
|
|
|
|
|
| |
IVE3 doesn't support UNSIGNED_INT <type> index values in DrawElements.
This patch checks if GL_OES_element_index_uint extensions is
supported and determines DrawElement indices type based on that.
On desktop environment UNSIGNED_INT is always supported.
Task-number: QTBUG-13563
Reviewed-by: Gunnar
|
|
|
|
|
| |
Task-number: QTBUG-14050
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Avoid adding a virtual QPixmapData::hasMask() function, we can
do without it. Made QPixmap::hasAlpha() fast, so we can use that
instead.
Reviewed-by: Samuel
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A regression from 4.6.x. This is an X11-only problem caused by the
separate masks that an X11 QPixmap can contain. These masks we're not
taken into account when a number optimizations were done for 4.7.
Introduction of the texture-from-pixmap extension in 4.6 also broke
masked pixmaps under X11.
Task-number: QTBUG-13814
Reviewed-by: Samuel
|
| |
| |
| |
| |
| | |
This reverts commit 89cbb165600de9a557a8a621dc41b93c2a7a2b52.
The patch should be applied to Qt 4.8, not 4.7.
|
| |
| |
| |
| |
| |
| |
| | |
Cache the last set filtering mode on glyph textures and update only
when necessary.
Reviewed-by: Gunnar Sletta
|
| |
| |
| |
| |
| |
| |
| | |
Qt always uses the same texture unit as the maskTexture, so it makes sense
to set the uniform only once when the program is created.
Reviewed-By: Gunnar Sletta
|
| |
| |
| |
| | |
Reviewed-by: Gunnar Sletta
|
| |
| |
| |
| |
| |
| |
| | |
The only consumer of TextDrawingMode is drawCachedGlyphs, and it always
sets these two attrib pointers anyway.
Reviewed-By: Gunnar Sletta
|
|/
|
|
|
|
|
| |
If the glyph cache texture changes size, the texture coordinate array
must be regenerated to point to the correct texture locations.
Reviewed-By: Gunnar Sletta
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Our glyph caching system doesn't take GL texture size limitation into
account, and assumes you can create an infinitely large texture.
On top of that, the cache will never create a cache that is wider
than 256, or QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH, which means we'll
hit the texture size limit even faster. With this patch the entire
texture is utilized. However, to fix in properly we need to support
having multiple texture for each font engine. That will be fixed
shortly (see task QTBUG-13784).
Task-number: QT-3971
Reviewed-by: Eskil
|
|
|
|
|
| |
Task-number: QTBUG-13450
Reviewed-by: Samuel
|
|
|
|
|
| |
Task-number: QTBUG-13409
Reviewed-by: Trond
|
|
|
|
|
|
|
| |
- Don't use toImage() / fromImage() to copy when a render FBO is active.
- Use raster for rendering to small (< 32x32) pixmaps.
Reviewed-by: Trond
|
|
|
|
|
| |
Task-number: QT-2139
Reviewed-by: Gunnar Sletta
|
|
|
|
| |
Reviewed-by: Eskil
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The merge 03dc74984749adf5b11482bf871a47086217845c mistakenly merged
the glyphMargin() (which had been removed in 4.7 because
QGLTextureGlyphCache now inherits from the image glyph cache) with the
glyphPadding() which had been introduced in separate commits in both
branches (probably backported.) This broke text drawing into a pixmap
with an alpha with the GL engine, because we'd assume a margin of 1,
but the alphaMapForGlyph() function doesn't support margins.
Task-number: QTBUG-11987
Reviewed-by: Gunnar
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/3rdparty/webkit/VERSION
src/3rdparty/webkit/WebCore/ChangeLog
src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
src/3rdparty/webkit/WebKit/qt/ChangeLog
src/gui/painting/qpainter.cpp
src/gui/painting/qtextureglyphcache.cpp
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
src/s60installs/bwins/QtGuiu.def
src/s60installs/eabi/QtCoreu.def
src/s60installs/eabi/QtGuiu.def
src/s60installs/eabi/QtNetworku.def
src/s60installs/eabi/QtOpenVGu.def
tests/auto/qfontmetrics/tst_qfontmetrics.cpp
tools/linguist/lupdate/main.cpp
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since the paint engine now transforms the prerendered glyphs instead of
rendering transformed glyphs as paths, we need to turn on texture
filtering to avoid antialiasing artifacts. In order to do this, we also
need to pad the glyphs in the glyph cache, otherwise you will get
artifacts when sampling the area around the glyph's bounding rect (where
there might be other glyphs.) This done by adding a glyphPadding()
function to the cache which returns the number of pixels to pad between
each glyph.
Updated: This also fixes a general issue where some combinations of font
sizes and transformations will cause the engine to sample neighbouring
glyphs, so this has been backported to Qt 4.6.x.
Task-number: QTBUG-9706, QTBUG-11028
Reviewed-by: Tom
Conflicts:
src/gui/painting/qtextureglyphcache.cpp
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since the OpenGL2 paint engine supports transforming the prerendered
glyphs rather than rasterizing the glyphs with the transformation
applied, we don't need to recalculate the QStaticText layout whenever
the transformation changes. This means that we can do fast animated
transforms for QStaticText on this paint engine. A quick test yields
something like 100x speed-up on Windows. This also give visually
better results, as we previously would animate the hinting of the
glyphs, thus causing jittering.
The autotest has been updated to reflect the fact that drawText() and
drawStaticText() now go through identical paths on GL, also when
transforms are set on the painter. However, the scale was changed in
one test, because it was so great that drawText() would fall back to
paths. With QStaticText the idea is speed, so you'll get a poor, but
fast result instead, which is better than tricking people.
Reviewed-by: Samuel
|