| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
First, don't call QWSWindowSurface::winId() in the destructor, as it
will actually request a new id if there isn't already one around - which
is a bit silly and highlighted the "real" bug.
Second, make sure QWSDisplay::Data::takeId() asks for 1 new id before
waiting for more ids to arrive. This is because waitForCreation() calls
QWSServer::processEventQueue(). If the events in the queue cause
takeId() to be called, QWSDisplay::Data::takeId() gets called
recursively. Even though there will be a create 15 ids command in the
queue, that will only allow 15 QWSDisplay::Data::takeId() calls to
return. The 16th call to QWSDisplay::Data::takeId() on the stack will
not be able to return because all the IDs have been taken and (because
it has been called recursively) no new create id commands have been
generated. So the 16th call to takeId() spins in waitForCreate().
Reviewed-by: Paul
|
|
|
|
|
|
|
|
|
|
|
| |
Add SuperH to the ever growing list of architectures which can't
correctly dereference a short* which is not 16-bit aligned. Turning this
into a white-list rather than a black list might make sense at some
point, but as QT_ARCH_I386 isn't defined on windows, the white list
looks even uglier at the moment. :-)
Task-number: 257077
Reviewed-by: TrustMe
|
|
|
|
|
|
|
|
| |
Line and polygon strokes did not respect the join/cap styles set
on a painter.
Task-number: 256914
Reviewed-by: Samuel
|
|
|
|
|
| |
Task-number: 256720
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The problem was that we did an accelerated move, i.e. scrolled the
widget's contents in the backing store and repainted the old area. We
cannot do this trick when the widget has been invalidated (show(),
resize()). In this case the widget had never been painted, so we
basically scrolled the content of its parent and the widget itself
appeared as invisible.
Auto-test included.
Task-number: 255117
Reviewed-by: Paul
|
|
|
|
|
|
|
|
|
|
| |
The documentation is a bit ambiguous on what the expected behavior here
is, but the behavior was consistent across paint engines before 4.5.
QPaintEngineEx introduced inconsistencies in the raster and OpenGL paint
engines, so this patch reverts the behavior back to what it was in 4.4.
Task-number: 256549
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
| |
Change from a relative to an absolute fuzzy compare as was the case
pre-4.4. With a relative fuzzy compare points that have an x or y
coordinate of 0 will never be merged with points that are very close to
0, for example (1e-15, 0).
Task-number: 251909
Reviewed-by: Trond
|
|
|
|
|
|
|
|
| |
Make sure not to use the broken QRect constructor, and do an early check
on whether the clip rect is empty in QRasterizer::rasterizeLine().
Task-number: 254105
Reviewed-by: Trond
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
| |
The predefined dash patterns for Mac have always been off, compared to
the ones in the raster engine and the GL engine.
Task-number: 255292
Reviewed-by: Kim
|
|
|
|
|
|
|
|
| |
Though this variable always will be initialized in
QX11PaintEngine::begin() valgrind complains about conditional jump or
move depends on uninitialised value(s).
Reviewed-by: Donald <qt-info@nokia.com>
|
|
|
|
|
|
|
|
|
|
| |
We didn't actually check the depth of the target window before
calling the qt_x11_drawImage() fu, that will only work with
depths >= 24.
Task-number: 255311
Reviewed-by: Samuel
BT: yes
|
|
|
|
|
|
|
|
|
|
|
| |
The blend functions assume the width / height of the images being
blended to be greater than 0. A width of 0 caused the first iteration of
a duff's device memcpy (QT_MEMCPY_USHORT) to be executed, thus blending
8 pixels instead of none.
BT: yes
Task-number: 255014
Reviewed-by: Trond
|
|
|
|
|
|
|
|
| |
The R and B channels were swapped on little endian machines with
BGR layout.
Task-number: 254934
Reviewed-by: Samuel
|
|
|
|
|
|
|
| |
This won't leak on error case, and will work with arbitrary sizes.
Also changed from int to short as instructed by Samuel.
Reviewed-by: Samuel <qt-info@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reworked the 85f98acaa3a38079071bea711e43c9a86edec1f6 fix, since
it broke glyph positioning in the GL engine under Windows.
Instead of changing the glyph cache margin, which impacts where
the glyph is positioned, we just make the image the glyph is drawn
into 4 pixels bigger in width/heigth.
The margin in QImageTextureGlyphCache needs to be reworked..
Task-number: 254450
Reviewed-by: Eskil
|
|
|
|
| |
Reviewed-by: Trust Me
|
|\ |
|
| |
| |
| |
| | |
Task-number: 252491
|
| |
| |
| |
| | |
Task-number: 252493
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit 30f7edc0aab629499b74263391ae529ad31b2ff8.
There is no way to restore float-equal warning using the pragma trick.
This means (as it was mentioned in the said commit log) anyone that
includes qtransform.h will be forced to deal with float-equal.
Reviewed-by: Samuel Rødal
|
| |
| |
| |
| | |
The typo was in commit 30f7edc0aab629499b74263391ae529ad31b2ff8.
|
|/
|
|
|
| |
Task-number: 254179
Reviewed-by: Norwegian Rock Cat
|
|
|
|
|
|
|
|
|
|
|
|
| |
Due to optimizations, there are few cases where comparing with a constant
is needed, e.g. in operator*=. G++ will give us a warning for this.
Since we know what we are doing, surpress the warning.
The only drawback for this workaround is if somebody includes
qtransform.h in his code and disable the float-equal warning since
the warning will be activated again.
Reviewed-by: Samuel Rødal
|
|
|
|
|
|
| |
Usually, "the the" is not proper English
Reviewed-By: Thiago Macieira
|
|
|
|
|
|
|
|
| |
When the end point of a line in a path is clipped, only closed paths
should have the closing line.
Task-number: 253663
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
| |
QColor::toCmyk() converted the color to RGB and then to CMYK. If the color
was already in CMYK, this conversion change it.
The color is now returned directly if it is in CMYK
Reviewed-by: Ariya
Task-number: 253625
|
|
|
|
|
|
|
|
|
|
| |
Some text drawn with OpenType fonts where cut off by a pixel or two
under certain circumstances. This adds an additional 2 pixel pad margin
to the glyph cache entries. The padding behaves slightly different
when ClearType is enabled/disabled, hence the general 2 pixel padding.
Task-number: 246196
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
|
| |
The handling of gradients with object bounding mode on pens in the
emulation paint engine has been changed to agree with the SVG standard,
where pen widths are ignored when calculating bounding boxes. Instead
of converting strokes to fills and then transforming the gradients
based on the fills' bounding box, the gradients are now transformed
first based on the bounding box of the stroke path.
Reviewed-by: Trond
|
|
|
|
| |
Reviewed-by: TrustMe
|
|
|
|
|
|
|
| |
It's obvious that not only PDF and PS printers are valid..
Task-number: related to 252873
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
| |
When passing a printer that is set up to print to a PDF file into
QPrintDialog, the print dialog could invalidate the printer and
not update the validity of it in a proper manner.
Task-number: 252873
Reviewed-by: Samuel
|
|
|
|
| |
Reviewed-by: nrc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The fix for 1x1 source rect image drawing in change
ffbb3c1a2aee4134dce80cd144a26bf32865b698 was incorrect for transforms
with type >= TxScale. The aliased coordinate delta needs to be applied
in device coordinates, not in logical coordinates.
Also specialize the non-antialiased TxScale case by simply calling
fillRect_normalized directly, avoiding having to scan convert the
rectangle manually.
Task-number: 251561
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updates triggered by the line edit itself, i.e. cursor blinking, are not
processed after the top-level is resized. This is yet another problem
caused by the event dispatcher on Windows (Qt posted events are not sent
during top-level resize, task 146849). We added a work-around for that
particular case by posting an event via Windows, but the widget is not
visible on the screen (hidden from Windows' POV) so it'll never be posted.
And of course then we'll never receive it and the backing store is not
synced. This work-around is therefore useless for widgets that are
not visible on the screen.
However, not receiving update requests while resizing the top-level
(in this case QGraphicsView), is not a problem for embedded widgets
because all items and hence the proxied widgets are repainted by
graphics view anyways.
Task-number: 252400
Reviewed-by: Olivier
|
|
|
|
|
|
|
|
|
| |
When building docs for the mac, qdoc comments for functions defined
in the .h file were not found in any of the .cpp files in the mac
package because they were in the x11 or windows .cpp file. So I
moved them to a .cpp file that is in all the packages.
Task-number: 252496 252492
|
|
|
|
|
|
|
|
|
| |
Don't know why the X server crashes, but it's reproducible both by us
and customers so we should fall back to the raster paint engine to avoid
the crash.
Task-number: 244362
Reviewed-by: Trond
|
|
|
|
|
|
|
|
| |
Don't use aliased coordinate delta for image drawing.
Related to change fde7475bcf9c10522a8170e6eb8fb9a8fadc21cd.
Task-number: 251561
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Images coordinates should simply be rounded and are not to be subject
to the aliased coordinate delta. The patch also adds a tiny delta in
QSpanData::setupMatrix() to ensure coordinates for fetching from source
images are rounded the opposite direction of the target rectangle.
This removes a lot of artifacts when trying to do border-image based
drawing on non-integer coordinates. A new qps test for border-image
drawing is included.
Task-number: 251561
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
| |
The bug appears in the raster paint engine and only in release mode as
the cause of the bug is in the MMX and SSE blend functions which are
disabled in debug. To prevent it simply we return early if we detect
that we have an opacity of 0.
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
| |
The width of a pixmap is NOT the same as the bytes per row. We may have
been able to do that in the past, but it doesn't work in the general
case. I also took the liberty to introduce a QCFType to automatically
handling the free in the general case.
Task-number: 252176
Reviewed-by: sroedal
|
|
|
|
|
|
|
|
| |
To avoid increasing code size for an uncommon case, the code
is #ifdef QT_QWS_ROTATE_BGR
Task-number: 250299
Reviewed-by: Tom
|
|
|
|
|
| |
Task-number: 252668
Reviewed-by: Samuel
|
|
|
|
|
|
| |
Avoid QRegion<->QPainterPath conversion if possible.
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
| |
We can speed up the calculation by using rect intersections
if possible, i.e. QRegion &= QRect instead of QRegion &= QRegion.
Then we'll get rid of one QRegion construction and the intersection
itself is slightly faster.
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
| |
Addendum to change 9b674ddcea7c0ff7912f185474b7d98bc83bd39f.
The problem was that QWidget::paintEngine() (pure virtual) was
called while being in the destructor. The use-case itself
(see above change) is very very corner case, but still,
it shouldn't crash.
Reviewed-by: bnilsen
|
|
|
|
|
|
|
|
| |
It seems the Xrender PictStandardA1 mask format doesn't work with
XLFD bitmap fonts wrapped in a fontconfig structure.
Task-number: 252328
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QGLWidget does not support partial updates unless the context is
single buffered and auto-fill background is disabled. The problem
was that QPaintEvent::region() returned the requested update region
without taking into account the limitation of QGLWidget. If QGLWidget
doesn't support partial updates, it means everything has to be updated,
and QPaintEvent::region() must return the whole widget rect.
Auto test included.
Task-number: 241785
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
an untransformed painter
When passing a painter to QWidget::render, we use the
painter->paintEngine()->systemClip() as the "system viewport",
i.e. all painting triggered by render() should be limited to
this area. The only way to achieve this is by always ensuring the
system clip is clipped to the same area (systemClip &= systemViewport).
The problem however, was that we only did this for transformed
painters. We must of course always do it when there's a systemViewport
set, regardless of whether the painter is transformed or not.
Auto test included.
Task-number: 248852
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
| |
If we have a rect-clip where we actually had spans (used for
cleartype) and then reused that clipdata, we would never re-create the
spans, which would mean that future drawing would be filtered based on
the old clip
Reviewed-by: Samuel
|