summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/painting')
-rw-r--r--src/gui/painting/painting.pri4
-rw-r--r--src/gui/painting/qblendfunctions_armv6_rvct.s93
-rw-r--r--src/gui/painting/qbrush.cpp10
-rw-r--r--src/gui/painting/qbrush.h4
-rw-r--r--src/gui/painting/qcolormap_s60.cpp1
-rw-r--r--src/gui/painting/qdrawhelper_armv6_rvct.inc170
-rw-r--r--src/gui/painting/qdrawhelper_armv6_rvct.s55
-rw-r--r--src/gui/painting/qgrayraster.c4
-rw-r--r--src/gui/painting/qpaintengine.h2
-rw-r--r--src/gui/painting/qpaintengine_alpha_p.h2
-rw-r--r--src/gui/painting/qpaintengine_mac_p.h2
-rw-r--r--src/gui/painting/qpaintengine_preview_p.h2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp88
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h16
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp2
-rw-r--r--src/gui/painting/qpaintengine_x11_p.h2
-rw-r--r--src/gui/painting/qpaintengineex_p.h2
-rw-r--r--src/gui/painting/qpainter.cpp19
-rw-r--r--src/gui/painting/qpainter.h6
-rw-r--r--src/gui/painting/qpainterpath.cpp9
-rw-r--r--src/gui/painting/qpainterpath.h8
-rw-r--r--src/gui/painting/qpdf_p.h2
-rw-r--r--src/gui/painting/qprintengine_mac_p.h2
-rw-r--r--src/gui/painting/qprintengine_pdf_p.h2
-rw-r--r--src/gui/painting/qprintengine_ps_p.h2
-rw-r--r--src/gui/painting/qprintengine_qws_p.h2
-rw-r--r--src/gui/painting/qprintengine_win_p.h2
-rw-r--r--src/gui/painting/qprinter.h2
-rw-r--r--src/gui/painting/qprinterinfo.h6
-rw-r--r--src/gui/painting/qprinterinfo_mac.cpp8
-rw-r--r--src/gui/painting/qprinterinfo_unix.cpp8
-rw-r--r--src/gui/painting/qprinterinfo_win.cpp8
-rw-r--r--src/gui/painting/qrasterizer.cpp4
-rw-r--r--src/gui/painting/qtessellator.cpp12
-rw-r--r--src/gui/painting/qwindowsurface_raster_p.h2
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp9
-rw-r--r--src/gui/painting/qwindowsurface_s60_p.h2
37 files changed, 260 insertions, 314 deletions
diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri
index 4121be6..2f5b2d6 100644
--- a/src/gui/painting/painting.pri
+++ b/src/gui/painting/painting.pri
@@ -229,7 +229,7 @@ contains(QMAKE_MAC_XARCH, no) {
win32-g++|!win32:!*-icc* {
mmx {
- mmx_compiler.commands = $$QMAKE_CXX -c -Winline
+ mmx_compiler.commands = $$QMAKE_CXX -c -Winline
mac {
mmx_compiler.commands += -Xarch_i386 -mmmx
@@ -371,7 +371,7 @@ symbian {
"SOURCE qblendfunctions_armv6_rvct.s" \
"SOURCE qdrawhelper_armv6_rvct.s" \
"$${LITERAL_HASH}endif"
-
+
MMP_RULES += armccIfdefBlock
QMAKE_CXXFLAGS.ARMCC *= -O3
}
diff --git a/src/gui/painting/qblendfunctions_armv6_rvct.s b/src/gui/painting/qblendfunctions_armv6_rvct.s
index 312bd07..64d5aa5 100644
--- a/src/gui/painting/qblendfunctions_armv6_rvct.s
+++ b/src/gui/painting/qblendfunctions_armv6_rvct.s
@@ -54,13 +54,13 @@
ARM
PRESERVE8
- INCLUDE qdrawhelper_armv6_rvct.inc
+ INCLUDE qdrawhelper_armv6_rvct.inc
;-----------------------------------------------------------------------------
; qt_blend_rgb32_on_rgb32_arm
-;
-; @brief
+;
+; @brief
;
; @param dest Destination pixels (r0)
; @param dbpl Destination bytes per line (r1)
@@ -69,25 +69,25 @@
; @param w Width (s0 -> r4)
; @param h Height (s1 -> r5)
; @param const_alpha Constant alpha (s2 -> r6)
-;
+;
;---------------------------------------------------------------------------
qt_blend_rgb32_on_rgb32_armv6 Function
stmfd sp!, {r4-r12, r14}
-
+
; read arguments off the stack
add r8, sp, #10 * 4
ldmia r8, {r9-r11}
-
+
; Reorganize registers
-
+
mov r4, r10
mov r5, r1
mov r6, r3
-
+
mov r1, r2
mov r2, r9
mov r3, r11
-
+
; Now we have registers
; @param dest Destination pixels (r0)
; @param src Source pixels (r1)
@@ -96,53 +96,53 @@ qt_blend_rgb32_on_rgb32_armv6 Function
; @param h Height (r4)
; @param dbpl Destination bytes per line (r5)
; @param sbpl Source bytes per line (r6)
-
+
cmp r3, #256 ; test if we have fully opaque constant alpha value
bne rgb32_blend_const_alpha ; branch if not
-
+
rgb32_blend_loop
subs r4, r4, #1
bmi rgb32_blend_exit ; while(h--)
-
-rgb321 PixCpySafe r0, r1, r2
+
+rgb321 PixCpySafe r0, r1, r2
add r0, r0, r5 ; dest = dest + dbpl
- add r1, r1, r6 ; src = src + sbpl
+ add r1, r1, r6 ; src = src + sbpl
+
+ b rgb32_blend_loop
+
- b rgb32_blend_loop
-
-
rgb32_blend_const_alpha
;ldr r14, =ComponentHalf ; load 0x800080 to r14
mov r14, #0x800000
add r14, r14, #0x80
-
+
sub r3, r3, #1 ; const_alpha -= 1;
rgb32_blend_loop_const_alpha
subs r4, r4, #1
bmi rgb32_blend_exit ; while(h--)
-
+
rgb322 BlendRowSafe PixelSourceOverConstAlpha
add r0, r0, r5 ; dest = dest + dbpl
- add r1, r1, r6 ; src = src + sbpl
+ add r1, r1, r6 ; src = src + sbpl
b rgb32_blend_loop_const_alpha
-
-rgb32_blend_exit
-
+
+rgb32_blend_exit
+
ldmfd sp!, {r4-r12, pc} ; pop and return
-
-
-
+
+
+
;-----------------------------------------------------------------------------
; qt_blend_argb32_on_argb32_arm
-;
-; @brief
+;
+; @brief
;
; @param dest Destination pixels (r0)
; @param dbpl Destination bytes per line (r1)
@@ -151,25 +151,25 @@ rgb32_blend_exit
; @param w Width (s0 -> r4)
; @param h Height (s1 -> r5)
; @param const_alpha Constant alpha (s2 -> r6)
-;
+;
;---------------------------------------------------------------------------
qt_blend_argb32_on_argb32_armv6 Function
stmfd sp!, {r4-r12, r14}
-
+
; read arguments off the stack
add r8, sp, #10 * 4
ldmia r8, {r9-r11}
-
+
; Reorganize registers
-
+
mov r4, r10
mov r5, r1
mov r6, r3
-
+
mov r1, r2
mov r2, r9
mov r3, r11
-
+
; Now we have registers
; @param dest Destination pixels (r0)
; @param src Source pixels (r1)
@@ -178,14 +178,14 @@ qt_blend_argb32_on_argb32_armv6 Function
; @param h Height (r4)
; @param dbpl Destination bytes per line (r5)
; @param sbpl Source bytes per line (r6)
-
+
;ldr r14, =ComponentHalf ; load 0x800080 to r14
mov r14, #0x800000
add r14, r14, #0x80
-
+
cmp r3, #256 ; test if we have fully opaque constant alpha value
bne argb32_blend_const_alpha ; branch if not
-
+
argb32_blend_loop
subs r4, r4, #1
@@ -194,10 +194,10 @@ argb32_blend_loop
argb321 BlendRowSafe PixelSourceOver
add r0, r0, r5 ; dest = dest + dbpl
- add r1, r1, r6 ; src = src + sbpl
+ add r1, r1, r6 ; src = src + sbpl
b argb32_blend_loop
-
+
argb32_blend_const_alpha
sub r3, r3, #1 ; const_alpha -= 1;
@@ -206,18 +206,17 @@ argb32_blend_loop_const_alpha
subs r4, r4, #1
bmi argb32_blend_exit ; while(h--)
-
+
argb322 BlendRowSafe PixelSourceOverConstAlpha
add r0, r0, r5 ; dest = dest + dbpl
- add r1, r1, r6 ; src = src + sbpl
+ add r1, r1, r6 ; src = src + sbpl
b argb32_blend_loop_const_alpha
-
-argb32_blend_exit
-
+
+argb32_blend_exit
+
ldmfd sp!, {r4-r12, pc} ; pop and return
-
-
+
+
END ; File end
-
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index 519e02e..97cbecc 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -230,7 +230,7 @@ struct QGradientBrushData : public QBrushData
QGradient gradient;
};
-struct QBrushDataPointerHandler
+struct QBrushDataPointerDeleter
{
static inline void deleteData(QBrushData *d)
{
@@ -254,12 +254,6 @@ struct QBrushDataPointerHandler
deleteData(d);
}
}
-
- static inline void reset(QBrushData *&d, QBrushData *other)
- {
- cleanup(d);
- d = other;
- }
};
/*!
@@ -580,7 +574,7 @@ QBrush::~QBrush()
void QBrush::cleanUp(QBrushData *x)
{
- QBrushDataPointerHandler::deleteData(x);
+ QBrushDataPointerDeleter::deleteData(x);
}
diff --git a/src/gui/painting/qbrush.h b/src/gui/painting/qbrush.h
index fdb3a8a..a9fbc75 100644
--- a/src/gui/painting/qbrush.h
+++ b/src/gui/painting/qbrush.h
@@ -71,7 +71,7 @@ struct QBrushData;
class QPixmap;
class QGradient;
class QVariant;
-struct QBrushDataPointerHandler;
+struct QBrushDataPointerDeleter;
class Q_GUI_EXPORT QBrush
{
@@ -137,7 +137,7 @@ private:
friend bool Q_GUI_EXPORT qHasPixmapTexture(const QBrush& brush);
void detach(Qt::BrushStyle newStyle);
void init(const QColor &color, Qt::BrushStyle bs);
- QScopedCustomPointer<QBrushData, QBrushDataPointerHandler> d;
+ QCustomScopedPointer<QBrushData, QBrushDataPointerDeleter> d;
void cleanUp(QBrushData *x);
public:
diff --git a/src/gui/painting/qcolormap_s60.cpp b/src/gui/painting/qcolormap_s60.cpp
index 1b58598..29d340f 100644
--- a/src/gui/painting/qcolormap_s60.cpp
+++ b/src/gui/painting/qcolormap_s60.cpp
@@ -105,4 +105,3 @@ QColormap &QColormap::operator=(const QColormap &colormap)
{ qAtomicAssign(d, colormap.d); return *this; }
QT_END_NAMESPACE
-
diff --git a/src/gui/painting/qdrawhelper_armv6_rvct.inc b/src/gui/painting/qdrawhelper_armv6_rvct.inc
index b3e0605..1cb316a 100644
--- a/src/gui/painting/qdrawhelper_armv6_rvct.inc
+++ b/src/gui/painting/qdrawhelper_armv6_rvct.inc
@@ -52,10 +52,10 @@
;-----------------------------------------------------------------------------
; Globals.
-; Earch marcro expects that caller has loaded 0x800080 to r14.
+; Earch marcro expects that caller has loaded 0x800080 to r14.
;-----------------------------------------------------------------------------
-ComponentHalf EQU 0x800080
+ComponentHalf EQU 0x800080
;-----------------------------------------------------------------------------
; ARM assembly implementations of accelerated graphics operations.
@@ -65,7 +65,7 @@ ComponentHalf EQU 0x800080
; - r0 = Target buffer pointer
; - r1 = Source buffer pointer
; - r2 = Length of the buffer to blend
-; - r3 = Constant alpha for source buffer
+; - r3 = Constant alpha for source buffer
;
;-----------------------------------------------------------------------------
@@ -78,8 +78,8 @@ $func Function
CODE32
$func
MEND
-
-
+
+
;-----------------------------------------------------------------------------
; Armv6 boosted implementation of BYTE_MUL(...) function found in qdrawhelper_p.h.
;
@@ -98,29 +98,29 @@ $func
; uint r8 = (x & 0xff00ff) * a + 0x800080
uxtb16 r8, $x ; r8 = r8 & 0x00FF00FF
mla r8, r8, $a, r14
-
+
; x = ((r >> 8) & 0xff00ff) * a + 0x800080
uxtb16 $x, $x, ror #8
mla $x, $x, $a, r14
-
+
; r8 = (r8 + ((r8 >> 8) & 0xff00ff) ) >> 8
; r8 &= 0xff00ff
uxtab16 r8, r8, r8, ror #8
uxtb16 r8, r8, ror #8
-
+
; x = x + ((x >>8) & 0xff00ff)
uxtab16 $x, $x, $x, ror #8
-
+
; x &= 0xff00ff00
; x |= r8
uxtb16 $x, $x, ror #8
orr $dst, r8, $x, lsl #8
-
+
MEND
-
+
;-----------------------------------------------------------------------------
-; Armv6 boosted implementation of INTERPOLATE_PIXEL_255(...) function found in
+; Armv6 boosted implementation of INTERPOLATE_PIXEL_255(...) function found in
; qdrawhelper_p.h.
;
; @param dst Destination register where to store the result
@@ -129,7 +129,7 @@ $func
; @param y Second value to multiply
; @param b Multiplicator byte for second value
; @param r14 Component half 0x800080
-;
+;
;
; @note Trashes x, r8, r14
;-----------------------------------------------------------------------------
@@ -143,40 +143,40 @@ $func
; uint r8 = (((x & 0xff00ff) * a) + 0x800080)
uxtb16 r8, $x ; r8 = r8 & 0x00FF00FF
mla r8, r8, $a, r14
-
+
; x = ((((x >> 8) & 0xff00ff) * a) + 0x800080)
uxtb16 $x, $x, ror #8
mla $x, $x, $a, r14
-
+
; Now we are trashing r14 to free it for other purposes
-
+
; uint r14 = (y & 0xff00ff) * b
uxtb16 r14, $y ; r14 = y & 0x00FF00FF
mul r14, r14, $b
-
+
; r8 = r8 + r14
add r8, r8, r14
-
+
; r8 = (r8 + ((r8 >> 8) & 0xff00ff) ) >> 8
; r8 &= 0xff00ff
uxtab16 r8, r8, r8, ror #8
uxtb16 r8, r8, ror #8
-
+
; r14 = ((y >> 8) & 0xff00ff) * b
uxtb16 r14, $y, ror #8 ; r14 = ((y >> 8) & 0xFF00FF)
mul r14, r14, $b
-
+
; x = x + r14
add $x, $x, r14
-
+
; x = x + ((x >>8) & 0xff00ff)
uxtab16 $x, $x, $x, ror #8
-
+
; x &= 0xff00ff00
; x |= r8
uxtb16 $x, $x, ror #8
orr $dst, r8, $x, lsl #8
-
+
MEND
;-----------------------------------------------------------------------------
@@ -184,19 +184,19 @@ $func
;-----------------------------------------------------------------------------
MACRO
$label Blend4Pixels $BlendPixel
-
- ; Blend first 4 pixels
-
+
+ ; Blend first 4 pixels
+
ldmia r1!, {r4-r7}
ldm r0, {r9-r12}
-
+
b4p1_$label $BlendPixel r9, r4, r3
b4p2_$label $BlendPixel r10, r5, r3
b4p3_$label $BlendPixel r11, r6, r3
b4p4_$label $BlendPixel r12, r7, r3
-
+
stmia r0!, {r9-r12}
-
+
MEND
;-----------------------------------------------------------------------------
@@ -204,43 +204,43 @@ b4p4_$label $BlendPixel r12, r7, r3
;-----------------------------------------------------------------------------
MACRO
$label Blend8Pixels $BlendPixel
-
+
b8p1_$label Blend4Pixels $BlendPixel
-b8p2_$label Blend4Pixels $BlendPixel
-
+b8p2_$label Blend4Pixels $BlendPixel
+
MEND
-
+
;-----------------------------------------------------------------------------
;
;-----------------------------------------------------------------------------
MACRO
$label Blend16Pixels $BlendPixel
-
+
b16p1_$label Blend8Pixels $BlendPixel
-b16p2_$label Blend8Pixels $BlendPixel
-
+b16p2_$label Blend8Pixels $BlendPixel
+
MEND
-
+
;-----------------------------------------------------------------------------
;
;-----------------------------------------------------------------------------
MACRO
$label Blend32Pixels $BlendPixel
-
+
b32p1_$label Blend16Pixels $BlendPixel
-b32p2_$label Blend16Pixels $BlendPixel
-
+b32p2_$label Blend16Pixels $BlendPixel
+
MEND
;-----------------------------------------------------------------------------
-; A macro for source over compositing one row of pixels and saving the results
+; A macro for source over compositing one row of pixels and saving the results
; to destination buffer.
;
; @param dest Destination buffer (r0)
; @param src Source buffer (r1)
; @param length Length (r2)
; @param const_alpha Constant alpha (r3)
-; @param r14 Component Half (0x800080) (r14)
+; @param r14 Component Half (0x800080) (r14)
;
; @note Advances r0, r1
; @note Trashes r2, r4-r12
@@ -260,73 +260,73 @@ brp1_$label Blend32Pixels $BlendPixel
b bloop_$label
b_remaining_$label
-
+
; Remaining 31 pixels
-
+
addmi r2, r2, #32
; Blend 16 pixels
tst r2, #16
beq b_remaining8_$label
-
+
brp2_$label Blend16Pixels $BlendPixel
-
-b_remaining8_$label
-
+
+b_remaining8_$label
+
; Blend 8 pixels
tst r2, #8
beq b_remaining4_$label
-
-brp3_$label Blend8Pixels $BlendPixel
-
-b_remaining4_$label
-
+
+brp3_$label Blend8Pixels $BlendPixel
+
+b_remaining4_$label
+
; Blend 4 pixels
tst r2, #4
beq b_remaining3_$label
-
-brp4_$label Blend4Pixels $BlendPixel
+
+brp4_$label Blend4Pixels $BlendPixel
b_remaining3_$label
; Remaining 3 pixels
-
+
tst r2, #2
beq b_last_$label
-
+
ldmia r1!, {r4-r5}
ldm r0, {r9-r10}
-
+
brp5_$label $BlendPixel r9, r4, r3
brp6_$label $BlendPixel r10, r5, r3
-
+
stmia r0!, {r9-r10}
b_last_$label
-
+
tst r2, #1
beq bexit_$label
-
+
ldr r4, [r1]
ldr r9, [r0]
bpl_$label $BlendPixel r9, r4, r3
-
+
str r9, [r0]
bexit_$label
MEND
-
+
;-----------------------------------------------------------------------------
-; A macro for source over compositing one row of pixels and saving the results
+; A macro for source over compositing one row of pixels and saving the results
; to destination buffer. Restores all registers.
;
; @param dest Destination buffer (r0)
; @param src Source buffer (r1)
; @param length Length (r2)
; @param const_alpha Constant alpha (r3)
-; @param r14 Component Half (0x800080) (r14)
+; @param r14 Component Half (0x800080) (r14)
;
; @note Advances r0, r1
; @note Trashes r2, r4-r12
@@ -336,16 +336,16 @@ $label BlendRowSafe $BlendPixel
stmfd sp!, {r0-r6} ; Preserves registers only up to r6
-brs_$label BlendRow $BlendPixel
+brs_$label BlendRow $BlendPixel
ldmfd sp!, {r0-r6}
- MEND
-
+ MEND
+
;-----------------------------------------------------------------------------
-; Pix Copy.
-; NOTE! Cache line size of ARM1136JF-S and ARM1136J-S is 32 bytes (8 pixels).
+; Pix Copy.
+; NOTE! Cache line size of ARM1136JF-S and ARM1136J-S is 32 bytes (8 pixels).
;
; @param dst Destination pixels (r0)
; @param src Source pixels (r1)
@@ -369,7 +369,7 @@ pcpy_loop_$label
pcpy_remaining_$label
; Copy up to 7 remaining pixels
-
+
; Copy 4 pixels
tst $len, #4
ldmneia $src!, {r3-r6}
@@ -384,9 +384,9 @@ pcpy_remaining_$label
strne r3, [$dst]
MEND
-
+
;-----------------------------------------------------------------------------
-; General Pix Copy. Maximum 8 pixels at time. Restores all registers.
+; General Pix Copy. Maximum 8 pixels at time. Restores all registers.
;
; @param dst Destination pixels (r0)
; @param src Source pixels (r1)
@@ -402,10 +402,10 @@ $label PixCpySafe $dst, $src, $len
pcs_$label PixCpy $dst, $src, $len
ldmfd sp!, {r0-r6} ; pop
-
+
MEND
-
-
+
+
;-----------------------------------------------------------------------------
; A macro for source over compositing one pixel and saving the result to
; dst register.
@@ -422,7 +422,7 @@ $label PixelSourceOver $dst, $src, $const_alpha
; Negate src and extract alpha
mvn $const_alpha, $src ; bitwise not
- uxtb $const_alpha, $const_alpha, ror #24 ; r3 = ((r3 & 0xFF000000) >> 24);
+ uxtb $const_alpha, $const_alpha, ror #24 ; r3 = ((r3 & 0xFF000000) >> 24);
;cmp $const_alpha, #255 ; test for full transparency ( negated )
;beq exit_$label
@@ -430,12 +430,12 @@ $label PixelSourceOver $dst, $src, $const_alpha
moveq $dst, $src
beq exit_$label
- ByteMul $dst, $dst, $const_alpha
+ ByteMul $dst, $dst, $const_alpha
add $dst, $src, $dst
-
+
exit_$label
MEND
-
+
;-----------------------------------------------------------------------------
; A macro for source over compositing one pixel and saving the result to
; dst register.
@@ -457,7 +457,7 @@ $label PixelSourceOverConstAlpha $dst, $src, $const_alpha
; Negate src and extract alpha
mvn $const_alpha, $src ; bitwise not
- uxtb $const_alpha, $const_alpha, ror #24 ; r3 = ((r3 & 0xFF000000) >> 24);
+ uxtb $const_alpha, $const_alpha, ror #24 ; r3 = ((r3 & 0xFF000000) >> 24);
ByteMul $dst, $dst, $const_alpha
@@ -466,8 +466,8 @@ $label PixelSourceOverConstAlpha $dst, $src, $const_alpha
; recover alpha
ldmfd sp!, {$const_alpha}
- MEND
-
+ MEND
+
;-----------------------------------------------------------------------------
; A macro for source over compositing one pixel and saving the result to
; a register.
@@ -491,6 +491,6 @@ $label PixelSourceConstAlpha $dst, $src, $const_alpha
; recover r2 and r14
ldmfd sp!, {r2, r14}
- MEND
-
+ MEND
+
END ; File end
diff --git a/src/gui/painting/qdrawhelper_armv6_rvct.s b/src/gui/painting/qdrawhelper_armv6_rvct.s
index 3ffe48b..dd29f80 100644
--- a/src/gui/painting/qdrawhelper_armv6_rvct.s
+++ b/src/gui/painting/qdrawhelper_armv6_rvct.s
@@ -52,22 +52,22 @@
ARM
PRESERVE8
-
+
INCLUDE qdrawhelper_armv6_rvct.inc
-
+
;-----------------------------------------------------------------------------
; qt_memfill32_armv6
-;
+;
; @brief Not yet in use!
;
; @param dest Destination buffer (r0)
; @param value Value (r1)
; @param count Count (r2)
-;
+;
;---------------------------------------------------------------------------
qt_memfill32_armv6 Function
stmfd sp!, {r4-r12, r14}
-
+
mov r3, r1
mov r4, r1
mov r5, r1
@@ -75,7 +75,7 @@ qt_memfill32_armv6 Function
mov r7, r1
mov r8, r1
mov r9, r1
-
+
mfill_loop
; Fill 32 pixels per loop iteration
subs r2, r2, #32
@@ -88,16 +88,16 @@ mfill_loop
mfill_remaining
; Fill up to 31 remaining pixels
-
+
; Fill 16 pixels
tst r2, #16
stmneia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
stmneia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
-
+
; Fill 8 pixels
tst r2, #8
stmneia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
-
+
; Fill 4 pixels
tst r2, #4
stmneia r0!, {r1, r3, r4, r5}
@@ -109,31 +109,31 @@ mfill_remaining
; Fill last one
tst r2, #1
strne r1, [r0]
-
+
ldmfd sp!, {r4-r12, pc} ; pop and return
-
+
;-----------------------------------------------------------------------------
; comp_func_Source_arm
-;
-; @brief
+;
+; @brief
;
; @param dest Destination buffer (r0)
; @param src Source buffer (r1)
; @param length Length (r2)
; @param const_alpha Constant alpha (r3)
-;
+;
;---------------------------------------------------------------------------
comp_func_Source_armv6 Function
stmfd sp!, {r4-r12, r14}
-
+
cmp r3, #255 ; if(r3 == 255)
bne src2 ; branch if not
-
+
src1 PixCpy r0, r1, r2
ldmfd sp!, {r4-r12, pc} ; pop and return
-src2
+src2
;ldr r14, =ComponentHalf ; load 0x800080 to r14
mov r14, #0x800000
add r14, r14, #0x80
@@ -144,35 +144,34 @@ src22 BlendRow PixelSourceConstAlpha
;-----------------------------------------------------------------------------
; comp_func_SourceOver_arm
-;
-; @brief
+;
+; @brief
;
; @param dest Destination buffer (r0)
; @param src Source buffer (r1)
; @param length Length (r2)
; @param const_alpha Constant alpha (r3)
-;
+;
;---------------------------------------------------------------------------
comp_func_SourceOver_armv6 Function
stmfd sp!, {r4-r12, r14}
-
+
;ldr r14, =ComponentHalf ; load 0x800080 to r14
mov r14, #0x800000
add r14, r14, #0x80
-
+
cmp r3, #255 ; if(r3 == 255)
bne srcovr2 ; branch if not
-
+
srcovr1 BlendRow PixelSourceOver
-
+
ldmfd sp!, {r4-r12, pc} ; pop and return
srcovr2
-
+
srcovr22 BlendRow PixelSourceOverConstAlpha
ldmfd sp!, {r4-r12, pc} ; pop and return
-
- END ; File end
-
+
+ END ; File end
diff --git a/src/gui/painting/qgrayraster.c b/src/gui/painting/qgrayraster.c
index 6ab7055..7a7adcf 100644
--- a/src/gui/painting/qgrayraster.c
+++ b/src/gui/painting/qgrayraster.c
@@ -1882,6 +1882,10 @@
if (memory)
fprintf(stderr, "gray_raster_new(), memory ignored");
memory = malloc(sizeof(TRaster));
+ if (!memory) {
+ *araster = 0;
+ return ErrRaster_Memory_Overflow;
+ }
QT_FT_MEM_ZERO(memory, sizeof(TRaster));
*araster = (QT_FT_Raster) memory;
diff --git a/src/gui/painting/qpaintengine.h b/src/gui/painting/qpaintengine.h
index 92aa506..6460afa 100644
--- a/src/gui/painting/qpaintengine.h
+++ b/src/gui/painting/qpaintengine.h
@@ -89,7 +89,7 @@ Q_DECLARE_TYPEINFO(QTextItem, Q_PRIMITIVE_TYPE);
class Q_GUI_EXPORT QPaintEngine
{
- Q_DECLARE_PRIVATE(QPaintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QPaintEngine)
public:
enum PaintEngineFeature {
PrimitiveTransform = 0x00000001, // Can transform primitives brushes
diff --git a/src/gui/painting/qpaintengine_alpha_p.h b/src/gui/painting/qpaintengine_alpha_p.h
index 7f45ad6..1a0b1ac 100644
--- a/src/gui/painting/qpaintengine_alpha_p.h
+++ b/src/gui/painting/qpaintengine_alpha_p.h
@@ -62,7 +62,7 @@ class QAlphaPaintEnginePrivate;
class QAlphaPaintEngine : public QPaintEngine
{
- Q_DECLARE_PRIVATE(QAlphaPaintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QAlphaPaintEngine)
public:
~QAlphaPaintEngine();
diff --git a/src/gui/painting/qpaintengine_mac_p.h b/src/gui/painting/qpaintengine_mac_p.h
index 20a4a08..42a55c4 100644
--- a/src/gui/painting/qpaintengine_mac_p.h
+++ b/src/gui/painting/qpaintengine_mac_p.h
@@ -69,7 +69,7 @@ extern int qt_defaultDpiY();
class QCoreGraphicsPaintEnginePrivate;
class QCoreGraphicsPaintEngine : public QPaintEngine
{
- Q_DECLARE_PRIVATE(QCoreGraphicsPaintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QCoreGraphicsPaintEngine)
public:
QCoreGraphicsPaintEngine();
diff --git a/src/gui/painting/qpaintengine_preview_p.h b/src/gui/painting/qpaintengine_preview_p.h
index 9f96d40..d8e2b08 100644
--- a/src/gui/painting/qpaintengine_preview_p.h
+++ b/src/gui/painting/qpaintengine_preview_p.h
@@ -65,7 +65,7 @@ class QPreviewPaintEnginePrivate;
class QPreviewPaintEngine : public QPaintEngine, public QPrintEngine
{
- Q_DECLARE_PRIVATE(QPreviewPaintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QPreviewPaintEngine)
public:
QPreviewPaintEngine();
~QPreviewPaintEngine();
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index d9af3f6..4aaa799 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -347,30 +347,33 @@ void QRasterPaintEngine::init()
Q_CHECK_PTR(d->rasterPoolBase);
// The antialiasing raster.
- d->grayRaster = new QT_FT_Raster;
- qt_ft_grays_raster.raster_new(0, d->grayRaster);
- qt_ft_grays_raster.raster_reset(*d->grayRaster, d->rasterPoolBase, d->rasterPoolSize);
+ d->grayRaster.reset(new QT_FT_Raster);
+ Q_CHECK_PTR(d->grayRaster.data());
+ if (qt_ft_grays_raster.raster_new(0, d->grayRaster.data()))
+ QT_THROW(std::bad_alloc()); // an error creating the raster is caused by a bad malloc
- d->rasterizer = new QRasterizer;
- d->rasterBuffer = new QRasterBuffer();
- d->outlineMapper = new QOutlineMapper;
+
+ qt_ft_grays_raster.raster_reset(*d->grayRaster.data(), d->rasterPoolBase, d->rasterPoolSize);
+
+ d->rasterizer.reset(new QRasterizer);
+ d->rasterBuffer.reset(new QRasterBuffer());
+ d->outlineMapper.reset(new QOutlineMapper);
d->outlinemapper_xform_dirty = true;
d->basicStroker.setMoveToHook(qt_ft_outline_move_to);
d->basicStroker.setLineToHook(qt_ft_outline_line_to);
d->basicStroker.setCubicToHook(qt_ft_outline_cubic_to);
- d->dashStroker = 0;
- d->baseClip = new QClipData(d->device->height());
+ d->baseClip.reset(new QClipData(d->device->height()));
d->baseClip->setClipRect(QRect(0, 0, d->device->width(), d->device->height()));
- d->image_filler.init(d->rasterBuffer, this);
+ d->image_filler.init(d->rasterBuffer.data(), this);
d->image_filler.type = QSpanData::Texture;
- d->image_filler_xform.init(d->rasterBuffer, this);
+ d->image_filler_xform.init(d->rasterBuffer.data(), this);
d->image_filler_xform.type = QSpanData::Texture;
- d->solid_color_filler.init(d->rasterBuffer, this);
+ d->solid_color_filler.init(d->rasterBuffer.data(), this);
d->solid_color_filler.type = QSpanData::Solid;
d->deviceDepth = d->device->depth();
@@ -439,15 +442,7 @@ QRasterPaintEngine::~QRasterPaintEngine()
free(d->rasterPoolBase);
#endif
- qt_ft_grays_raster.raster_done(*d->grayRaster);
- delete d->grayRaster;
-
- delete d->rasterBuffer;
- delete d->outlineMapper;
- delete d->rasterizer;
- delete d->dashStroker;
-
- delete d->baseClip;
+ qt_ft_grays_raster.raster_done(*d->grayRaster.data());
}
/*!
@@ -483,12 +478,12 @@ bool QRasterPaintEngine::begin(QPaintDevice *device)
d->rasterizer->setClipRect(d->deviceRect);
- s->penData.init(d->rasterBuffer, this);
+ s->penData.init(d->rasterBuffer.data(), this);
s->penData.setup(s->pen.brush(), s->intOpacity, s->composition_mode);
s->stroker = &d->basicStroker;
d->basicStroker.setClipRect(d->deviceRect);
- s->brushData.init(d->rasterBuffer, this);
+ s->brushData.init(d->rasterBuffer.data(), this);
s->brushData.setup(s->brush, s->intOpacity, s->composition_mode);
d->rasterBuffer->compositionMode = QPainter::CompositionMode_SourceOver;
@@ -552,8 +547,7 @@ bool QRasterPaintEngine::end()
void QRasterPaintEngine::releaseBuffer()
{
Q_D(QRasterPaintEngine);
- delete d->rasterBuffer;
- d->rasterBuffer = new QRasterBuffer;
+ d->rasterBuffer.reset(new QRasterBuffer);
}
/*!
@@ -797,8 +791,8 @@ void QRasterPaintEngine::updatePen(const QPen &pen)
if(pen_style == Qt::SolidLine) {
s->stroker = &d->basicStroker;
} else if (pen_style != Qt::NoPen) {
- if (!d->dashStroker)
- d->dashStroker = new QDashStroker(&d->basicStroker);
+ if (!d->dashStroker.data())
+ d->dashStroker.reset(new QDashStroker(&d->basicStroker));
if (pen.isCosmetic()) {
d->dashStroker->setClipRect(d->deviceRect);
} else {
@@ -808,7 +802,7 @@ void QRasterPaintEngine::updatePen(const QPen &pen)
}
d->dashStroker->setDashPattern(pen.dashPattern());
d->dashStroker->setDashOffset(pen.dashOffset());
- s->stroker = d->dashStroker;
+ s->stroker = d->dashStroker.data();
} else {
s->stroker = 0;
}
@@ -1244,7 +1238,7 @@ void QRasterPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
qrasterpaintengine_state_setNoClip(s);
} else {
- QClipData *base = d->baseClip;
+ QClipData *base = d->baseClip.data();
// Intersect with current clip when available...
if (op == Qt::IntersectClip && s->clip)
@@ -1369,7 +1363,7 @@ void QRasterPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
QRasterPaintEngineState *s = state();
const QClipData *clip = d->clip();
- const QClipData *baseClip = d->baseClip;
+ const QClipData *baseClip = d->baseClip.data();
if (op == Qt::NoClip) {
qrasterpaintengine_state_setNoClip(s);
@@ -1437,7 +1431,7 @@ void QRasterPaintEngine::fillPath(const QPainterPath &path, QSpanData *fillData)
}
ensureOutlineMapper();
- d->rasterize(d->outlineMapper->convertPath(path), blend, fillData, d->rasterBuffer);
+ d->rasterize(d->outlineMapper->convertPath(path), blend, fillData, d->rasterBuffer.data());
}
static void fillRect_normalized(const QRect &r, QSpanData *data,
@@ -1867,7 +1861,7 @@ void QRasterPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
// }
ensureOutlineMapper();
- d->rasterize(d->outlineMapper->convertPath(path), blend, &s->brushData, d->rasterBuffer);
+ d->rasterize(d->outlineMapper->convertPath(path), blend, &s->brushData, d->rasterBuffer.data());
}
void QRasterPaintEngine::fillRect(const QRectF &r, QSpanData *data)
@@ -2034,7 +2028,7 @@ void QRasterPaintEngine::fillPolygon(const QPointF *points, int pointCount, Poly
// scanconvert.
ProcessSpans brushBlend = d->getBrushFunc(d->outlineMapper->controlPointRect,
&s->brushData);
- d->rasterize(outline, brushBlend, &s->brushData, d->rasterBuffer);
+ d->rasterize(outline, brushBlend, &s->brushData, d->rasterBuffer.data());
}
/*!
@@ -2130,7 +2124,7 @@ void QRasterPaintEngine::drawPolygon(const QPoint *points, int pointCount, Polyg
// scanconvert.
ProcessSpans brushBlend = d->getBrushFunc(d->outlineMapper->controlPointRect,
&s->brushData);
- d->rasterize(d->outlineMapper->outline(), brushBlend, &s->brushData, d->rasterBuffer);
+ d->rasterize(d->outlineMapper->outline(), brushBlend, &s->brushData, d->rasterBuffer.data());
d->outlineMapper->setCoordinateRounding(false);
}
}
@@ -2755,7 +2749,7 @@ void QRasterPaintEngine::alphaPenBlt(const void* src, int bpl, int depth, int rx
if (!s->penData.blend)
return;
- QRasterBuffer *rb = d->rasterBuffer;
+ QRasterBuffer *rb = d->rasterBuffer.data();
const QRect rect(rx, ry, w, h);
const QClipData *clip = d->clip();
@@ -4017,7 +4011,7 @@ void QRasterPaintEnginePrivate::rasterize(QT_FT_Outline *outline,
rasterParams.flags |= (QT_FT_RASTER_FLAG_AA | QT_FT_RASTER_FLAG_DIRECT);
rasterParams.gray_spans = callback;
- error = qt_ft_grays_raster.raster_render(*grayRaster, &rasterParams);
+ error = qt_ft_grays_raster.raster_render(*grayRaster.data(), &rasterParams);
// Out of memory, reallocate some more and try again...
if (error == -6) { // -6 is Result_err_OutOfMemory
@@ -4044,9 +4038,9 @@ void QRasterPaintEnginePrivate::rasterize(QT_FT_Outline *outline,
#endif
Q_CHECK_PTR(rasterPoolBase); // note: we just freed the old rasterPoolBase. I hope it's not fatal.
- qt_ft_grays_raster.raster_done(*grayRaster);
- qt_ft_grays_raster.raster_new(0, grayRaster);
- qt_ft_grays_raster.raster_reset(*grayRaster, rasterPoolBase, rasterPoolSize);
+ qt_ft_grays_raster.raster_done(*grayRaster.data());
+ qt_ft_grays_raster.raster_new(0, grayRaster.data());
+ qt_ft_grays_raster.raster_reset(*grayRaster.data(), rasterPoolBase, rasterPoolSize);
} else {
done = true;
}
@@ -4080,6 +4074,8 @@ QImage QRasterBuffer::colorizeBitmap(const QImage &image, const QColor &color)
for (int y=0; y<height; ++y) {
uchar *source = sourceImage.scanLine(y);
QRgb *target = reinterpret_cast<QRgb *>(dest.scanLine(y));
+ if (!source || !target)
+ QT_THROW(std::bad_alloc()); // we must have run out of memory
for (int x=0; x < width; ++x)
target[x] = (source[x>>3] >> (x&7)) & 1 ? fg : bg;
}
@@ -4283,7 +4279,7 @@ void QClipData::initialize()
Q_CHECK_PTR(m_clipLines);
QT_TRY {
m_spans = (QSpan *)malloc(clipSpanHeight*sizeof(QSpan));
- allocated = clipSpanHeight;
+ allocated = clipSpanHeight;
Q_CHECK_PTR(m_spans);
QT_TRY {
@@ -4323,9 +4319,7 @@ void QClipData::initialize()
{ // resize
const int maxSpans = (ymax - ymin) * numRects;
if (maxSpans > allocated) {
- QSpan *newSpans = (QSpan *)realloc(m_spans, maxSpans * sizeof(QSpan));
- Q_CHECK_PTR(newSpans);
- m_spans = newSpans;
+ m_spans = q_check_ptr((QSpan *)realloc(m_spans, maxSpans * sizeof(QSpan)));
allocated = maxSpans;
}
}
@@ -4377,11 +4371,13 @@ void QClipData::initialize()
}
} QT_CATCH(...) {
- free(m_spans);
+ free(m_spans); // have to free m_spans again or someone might think that we were successfully initialized.
+ m_spans = 0;
QT_RETHROW;
}
} QT_CATCH(...) {
- free(m_clipLines);
+ free(m_clipLines); // same for clipLines
+ m_clipLines = 0;
QT_RETHROW;
}
}
@@ -4657,9 +4653,7 @@ static void qt_span_clip(int count, const QSpan *spans, void *userData)
&newspans, newClip->allocated - newClip->count);
newClip->count = newspans - newClip->m_spans;
if (spans < end) {
- QSpan *newSpan = (QSpan *)realloc(newClip->m_spans, newClip->allocated*2*sizeof(QSpan));
- Q_CHECK_PTR(newSpan);
- newClip->m_spans = newSpan;
+ newClip->m_spans = q_check_ptr((QSpan *)realloc(newClip->m_spans, newClip->allocated*2*sizeof(QSpan)));
newClip->allocated *= 2;
}
}
diff --git a/src/gui/painting/qpaintengine_raster_p.h b/src/gui/painting/qpaintengine_raster_p.h
index 3dab491..43f7675 100644
--- a/src/gui/painting/qpaintengine_raster_p.h
+++ b/src/gui/painting/qpaintengine_raster_p.h
@@ -134,7 +134,7 @@ Q_GUI_EXPORT
#endif
QRasterPaintEngine : public QPaintEngineEx
{
- Q_DECLARE_PRIVATE(QRasterPaintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QRasterPaintEngine)
public:
QRasterPaintEngine(QPaintDevice *device);
@@ -331,8 +331,8 @@ public:
void recalculateFastImages();
QPaintDevice *device;
- QOutlineMapper *outlineMapper;
- QRasterBuffer *rasterBuffer;
+ QScopedPointer<QOutlineMapper> outlineMapper;
+ QScopedPointer<QRasterBuffer> rasterBuffer;
#if defined (Q_WS_WIN)
HDC hdc;
@@ -343,9 +343,9 @@ public:
QRect deviceRect;
QStroker basicStroker;
- QDashStroker *dashStroker;
+ QScopedPointer<QDashStroker> dashStroker;
- QT_FT_Raster *grayRaster;
+ QScopedPointer<QT_FT_Raster> grayRaster;
unsigned long rasterPoolSize;
unsigned char *rasterPoolBase;
@@ -357,7 +357,7 @@ public:
QFontEngineGlyphCache::Type glyphCacheType;
- QClipData *baseClip;
+ QScopedPointer<QClipData> baseClip;
int deviceDepth;
@@ -368,7 +368,7 @@ public:
uint isPlain45DegreeRotation : 1;
#endif
- QRasterizer *rasterizer;
+ QScopedPointer<QRasterizer> rasterizer;
};
@@ -539,7 +539,7 @@ inline const QClipData *QRasterPaintEnginePrivate::clip() const {
Q_Q(const QRasterPaintEngine);
if (q->state() && q->state()->clip && q->state()->clip->enabled)
return q->state()->clip;
- return baseClip;
+ return baseClip.data();
}
diff --git a/src/gui/painting/qpaintengine_x11.cpp b/src/gui/painting/qpaintengine_x11.cpp
index e3248ea..6ab39da 100644
--- a/src/gui/painting/qpaintengine_x11.cpp
+++ b/src/gui/painting/qpaintengine_x11.cpp
@@ -271,7 +271,7 @@ void QXRenderTessellator::addTrap(const Trapezoid &trap)
{
if (size == allocated) {
allocated = qMax(2*allocated, 64);
- traps = (XTrapezoid *)realloc(traps, allocated * sizeof(XTrapezoid));
+ traps = q_check_ptr((XTrapezoid *)realloc(traps, allocated * sizeof(XTrapezoid)));
}
traps[size].top = Q27Dot5ToXFixed(trap.top);
traps[size].bottom = Q27Dot5ToXFixed(trap.bottom);
diff --git a/src/gui/painting/qpaintengine_x11_p.h b/src/gui/painting/qpaintengine_x11_p.h
index 738a155..2a7894d 100644
--- a/src/gui/painting/qpaintengine_x11_p.h
+++ b/src/gui/painting/qpaintengine_x11_p.h
@@ -76,7 +76,7 @@ struct qt_float_point
class QX11PaintEngine : public QPaintEngine
{
- Q_DECLARE_PRIVATE(QX11PaintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QX11PaintEngine)
public:
QX11PaintEngine();
~QX11PaintEngine();
diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h
index 22354bc..aea79e8 100644
--- a/src/gui/painting/qpaintengineex_p.h
+++ b/src/gui/painting/qpaintengineex_p.h
@@ -143,7 +143,7 @@ class QPixmapFilter;
class Q_GUI_EXPORT QPaintEngineEx : public QPaintEngine
{
- Q_DECLARE_PRIVATE(QPaintEngineEx)
+ Q_DECLARE_SCOPED_PRIVATE(QPaintEngineEx)
public:
QPaintEngineEx();
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 76e2fcc..e4c6f57 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -80,21 +80,6 @@ QT_BEGIN_NAMESPACE
bool qt_show_painter_debug_output = true;
#endif
-class QPainterPrivateCleaner
-{
-public:
- static inline void cleanup(QPainterPrivate *d)
- {
- delete d;
- }
-
- static inline void reset(QPainterPrivate *&d, QPainterPrivate *other)
- {
- delete d;
- d = other;
- }
-};
-
extern QPixmap qt_pixmapForBrush(int style, bool invert);
void qt_format_text(const QFont &font,
@@ -276,9 +261,7 @@ bool QPainterPrivate::attachPainterPrivate(QPainter *q, QPaintDevice *pdev)
// However, to support corner cases we grow the array dynamically if needed.
sp->d_ptr->d_ptrs_size <<= 1;
const int newSize = sp->d_ptr->d_ptrs_size * sizeof(QPainterPrivate *);
- QPainterPrivate ** newPointers = (QPainterPrivate **)realloc(sp->d_ptr->d_ptrs, newSize);
- Q_CHECK_PTR(newPointers);
- sp->d_ptr->d_ptrs = newPointers;
+ sp->d_ptr->d_ptrs = q_check_ptr((QPainterPrivate **)realloc(sp->d_ptr->d_ptrs, newSize));
}
sp->d_ptr->d_ptrs[++sp->d_ptr->refcount - 2] = q->d_ptr.data();
q->d_ptr.data_ptr() = sp->d_ptr.data();
diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h
index c81f5d4..227c6f5 100644
--- a/src/gui/painting/qpainter.h
+++ b/src/gui/painting/qpainter.h
@@ -79,11 +79,11 @@ class QTextItem;
class QMatrix;
class QTransform;
-class QPainterPrivateCleaner;
+class QPainterPrivateDeleter;
class Q_GUI_EXPORT QPainter
{
- Q_DECLARE_PRIVATE(QPainter)
+ Q_DECLARE_SCOPED_PRIVATE(QPainter)
Q_GADGET
Q_FLAGS(RenderHint RenderHints)
@@ -500,7 +500,7 @@ private:
Q_DISABLE_COPY(QPainter)
friend class Q3Painter;
- QScopedCustomPointer<QPainterPrivate, QPainterPrivateCleaner> d_ptr;
+ QCustomScopedPointer<QPainterPrivate> d_ptr;
friend class QFontEngine;
friend class QFontEngineBox;
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index f9fd61e..20d7985 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -73,7 +73,7 @@
QT_BEGIN_NAMESPACE
-struct QPainterPathPrivateHandler
+struct QPainterPathPrivateDeleter
{
static inline void cleanup(QPainterPathPrivate *d)
{
@@ -82,13 +82,6 @@ struct QPainterPathPrivateHandler
if (d && !d->ref.deref())
delete static_cast<QPainterPathData *>(d);
}
-
- static inline void reset(QPainterPathPrivate *&d, QPainterPathPrivate *other)
- {
- QPainterPathPrivate *oldD = d;
- d = other;
- cleanup(oldD);
- }
};
// This value is used to determine the length of control point vectors
diff --git a/src/gui/painting/qpainterpath.h b/src/gui/painting/qpainterpath.h
index 5068739..ef92397 100644
--- a/src/gui/painting/qpainterpath.h
+++ b/src/gui/painting/qpainterpath.h
@@ -57,7 +57,7 @@ QT_MODULE(Gui)
class QFont;
class QPainterPathPrivate;
-struct QPainterPathPrivateHandler;
+struct QPainterPathPrivateDeleter;
class QPainterPathData;
class QPainterPathStrokerPrivate;
class QPolygonF;
@@ -203,7 +203,7 @@ public:
QPainterPath &operator-=(const QPainterPath &other);
private:
- QScopedCustomPointer<QPainterPathPrivate, QPainterPathPrivateHandler> d_ptr;
+ QScopedPointer<QPainterPathPrivate, QPainterPathPrivateDeleter> d_ptr;
inline void ensureData() { if (!d_ptr) ensureData_helper(); }
void ensureData_helper();
@@ -237,7 +237,7 @@ public:
friend class QPainterPathStrokerPrivate;
friend class QMatrix;
friend class QTransform;
- friend struct QPainterPathPrivateHandler;
+ friend struct QPainterPathPrivateDeleter;
#ifndef QT_NO_DATASTREAM
friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPainterPath &);
friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPainterPath &);
@@ -256,7 +256,7 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPainterPath &);
class Q_GUI_EXPORT QPainterPathStroker
{
- Q_DECLARE_PRIVATE(QPainterPathStroker)
+ Q_DECLARE_SCOPED_PRIVATE(QPainterPathStroker)
public:
QPainterPathStroker();
~QPainterPathStroker();
diff --git a/src/gui/painting/qpdf_p.h b/src/gui/painting/qpdf_p.h
index 0e023d6..26f5bd7 100644
--- a/src/gui/painting/qpdf_p.h
+++ b/src/gui/painting/qpdf_p.h
@@ -183,7 +183,7 @@ class QPdfBaseEnginePrivate;
class QPdfBaseEngine : public QAlphaPaintEngine, public QPrintEngine
{
- Q_DECLARE_PRIVATE(QPdfBaseEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QPdfBaseEngine)
public:
QPdfBaseEngine(QPdfBaseEnginePrivate &d, PaintEngineFeatures f);
~QPdfBaseEngine() {}
diff --git a/src/gui/painting/qprintengine_mac_p.h b/src/gui/painting/qprintengine_mac_p.h
index 23e99cd..1fdb172 100644
--- a/src/gui/painting/qprintengine_mac_p.h
+++ b/src/gui/painting/qprintengine_mac_p.h
@@ -72,7 +72,7 @@ class QPrinterPrivate;
class QMacPrintEnginePrivate;
class QMacPrintEngine : public QPaintEngine, public QPrintEngine
{
- Q_DECLARE_PRIVATE(QMacPrintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QMacPrintEngine)
public:
QMacPrintEngine(QPrinter::PrinterMode mode);
diff --git a/src/gui/painting/qprintengine_pdf_p.h b/src/gui/painting/qprintengine_pdf_p.h
index 6f884a9..e130ada 100644
--- a/src/gui/painting/qprintengine_pdf_p.h
+++ b/src/gui/painting/qprintengine_pdf_p.h
@@ -84,7 +84,7 @@ class QPdfEnginePrivate;
class QPdfEngine : public QPdfBaseEngine
{
- Q_DECLARE_PRIVATE(QPdfEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QPdfEngine)
public:
QPdfEngine(QPrinter::PrinterMode m);
virtual ~QPdfEngine();
diff --git a/src/gui/painting/qprintengine_ps_p.h b/src/gui/painting/qprintengine_ps_p.h
index 986be38a..4b8034e 100644
--- a/src/gui/painting/qprintengine_ps_p.h
+++ b/src/gui/painting/qprintengine_ps_p.h
@@ -70,7 +70,7 @@ class QPSPrintEnginePrivate;
class QPSPrintEngine : public QPdfBaseEngine
{
- Q_DECLARE_PRIVATE(QPSPrintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QPSPrintEngine)
public:
// QPrinter uses these
explicit QPSPrintEngine(QPrinter::PrinterMode m);
diff --git a/src/gui/painting/qprintengine_qws_p.h b/src/gui/painting/qprintengine_qws_p.h
index 41cf935..5e552fe 100644
--- a/src/gui/painting/qprintengine_qws_p.h
+++ b/src/gui/painting/qprintengine_qws_p.h
@@ -70,7 +70,7 @@ class QImage;
class QtopiaPrintEngine : public QPaintEngine, public QPrintEngine
{
- Q_DECLARE_PRIVATE(QtopiaPrintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QtopiaPrintEngine)
public:
QtopiaPrintEngine(QPrinter::PrinterMode mode);
diff --git a/src/gui/painting/qprintengine_win_p.h b/src/gui/painting/qprintengine_win_p.h
index 36a32e8..34fa538 100644
--- a/src/gui/painting/qprintengine_win_p.h
+++ b/src/gui/painting/qprintengine_win_p.h
@@ -69,7 +69,7 @@ class QPainterState;
class QWin32PrintEngine : public QAlphaPaintEngine, public QPrintEngine
{
- Q_DECLARE_PRIVATE(QWin32PrintEngine)
+ Q_DECLARE_SCOPED_PRIVATE(QWin32PrintEngine)
public:
QWin32PrintEngine(QPrinter::PrinterMode mode);
diff --git a/src/gui/painting/qprinter.h b/src/gui/painting/qprinter.h
index 25c2f0c..842845b 100644
--- a/src/gui/painting/qprinter.h
+++ b/src/gui/painting/qprinter.h
@@ -65,7 +65,7 @@ class QPrinterInfo;
class Q_GUI_EXPORT QPrinter : public QPaintDevice
{
- Q_DECLARE_PRIVATE(QPrinter)
+ Q_DECLARE_SCOPED_PRIVATE(QPrinter)
public:
enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution };
diff --git a/src/gui/painting/qprinterinfo.h b/src/gui/painting/qprinterinfo.h
index c34e591..5c0a25f 100644
--- a/src/gui/painting/qprinterinfo.h
+++ b/src/gui/painting/qprinterinfo.h
@@ -53,10 +53,10 @@ QT_MODULE(Gui)
#ifndef QT_NO_PRINTER
class QPrinterInfoPrivate;
-class QPrinterInfoPrivateCleanup;
+class QPrinterInfoPrivateDeleter;
class Q_GUI_EXPORT QPrinterInfo
{
-Q_DECLARE_PRIVATE(QPrinterInfo)
+Q_DECLARE_SCOPED_PRIVATE(QPrinterInfo)
public:
QPrinterInfo();
@@ -77,7 +77,7 @@ public:
private:
QPrinterInfo(const QString& name);
- QScopedCustomPointer<QPrinterInfoPrivate, QPrinterInfoPrivateCleanup> d_ptr;
+ QScopedPointer<QPrinterInfoPrivate, QPrinterInfoPrivateDeleter> d_ptr;
};
#endif // QT_NO_PRINTER
diff --git a/src/gui/painting/qprinterinfo_mac.cpp b/src/gui/painting/qprinterinfo_mac.cpp
index 6932015..66455d9 100644
--- a/src/gui/painting/qprinterinfo_mac.cpp
+++ b/src/gui/painting/qprinterinfo_mac.cpp
@@ -65,7 +65,7 @@ private:
static QPrinterInfoPrivate nullQPrinterInfoPrivate;
-class QPrinterInfoPrivateCleanup
+class QPrinterInfoPrivateDeleter
{
public:
static inline void cleanup(QPrinterInfoPrivate *d)
@@ -73,12 +73,6 @@ public:
if (d != &nullQPrinterInfoPrivate)
delete d;
}
-
- static inline void reset(QPrinterInfoPrivate *&d, QPrinterInfoPrivate *other)
- {
- cleanup(d);
- d = other;
- }
};
extern QPrinter::PaperSize qSizeFTopaperSize(const QSizeF& size);
diff --git a/src/gui/painting/qprinterinfo_unix.cpp b/src/gui/painting/qprinterinfo_unix.cpp
index b9f1f3b..11f94dc 100644
--- a/src/gui/painting/qprinterinfo_unix.cpp
+++ b/src/gui/painting/qprinterinfo_unix.cpp
@@ -82,7 +82,7 @@ private:
static QPrinterInfoPrivate nullQPrinterInfoPrivate;
-class QPrinterInfoPrivateCleanup
+class QPrinterInfoPrivateDeleter
{
public:
static inline void cleanup(QPrinterInfoPrivate *d)
@@ -90,12 +90,6 @@ public:
if (d != &nullQPrinterInfoPrivate)
delete d;
}
-
- static inline void reset(QPrinterInfoPrivate *&d, QPrinterInfoPrivate *other)
- {
- cleanup(d);
- d = other;
- }
};
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/gui/painting/qprinterinfo_win.cpp b/src/gui/painting/qprinterinfo_win.cpp
index 4a92d30..89449b0 100644
--- a/src/gui/painting/qprinterinfo_win.cpp
+++ b/src/gui/painting/qprinterinfo_win.cpp
@@ -69,7 +69,7 @@ private:
static QPrinterInfoPrivate nullQPrinterInfoPrivate;
-class QPrinterInfoPrivateCleanup
+class QPrinterInfoPrivateDeleter
{
public:
static inline void cleanup(QPrinterInfoPrivate *d)
@@ -77,12 +77,6 @@ public:
if (d != &nullQPrinterInfoPrivate)
delete d;
}
-
- static inline void reset(QPrinterInfoPrivate *&d, QPrinterInfoPrivate *other)
- {
- cleanup(d);
- d = other;
- }
};
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/gui/painting/qrasterizer.cpp b/src/gui/painting/qrasterizer.cpp
index 6d15271..346b31d 100644
--- a/src/gui/painting/qrasterizer.cpp
+++ b/src/gui/painting/qrasterizer.cpp
@@ -437,10 +437,8 @@ inline void QScanConverter::allocate(int size)
{
if (m_alloc < size) {
int newAlloc = qMax(size, 2 * m_alloc);
- Intersection *newIntersections = (Intersection *)realloc(m_intersections, newAlloc * sizeof(Intersection));
- Q_CHECK_PTR(newIntersections);
+ m_intersections = q_check_ptr((Intersection *)realloc(m_intersections, newAlloc * sizeof(Intersection)));
m_alloc = newAlloc;
- m_intersections = newIntersections;
}
}
diff --git a/src/gui/painting/qtessellator.cpp b/src/gui/painting/qtessellator.cpp
index 711f997..6c16772 100644
--- a/src/gui/painting/qtessellator.cpp
+++ b/src/gui/painting/qtessellator.cpp
@@ -406,9 +406,9 @@ void QTessellatorPrivate::Scanline::init(int maxActiveEdges)
if (!edges || maxActiveEdges > default_alloc) {
max_edges = maxActiveEdges;
int s = qMax(maxActiveEdges + 1, default_alloc + 1);
- edges = (Edge **)realloc(edges, s*sizeof(Edge *));
- edge_table = (Edge *)realloc(edge_table, s*sizeof(Edge));
- old = (Edge **)realloc(old, s*sizeof(Edge *));
+ edges = q_check_ptr((Edge **)realloc(edges, s*sizeof(Edge *)));
+ edge_table = q_check_ptr((Edge *)realloc(edge_table, s*sizeof(Edge)));
+ old = q_check_ptr((Edge **)realloc(old, s*sizeof(Edge *)));
}
size = 0;
old_size = 0;
@@ -566,8 +566,8 @@ void QTessellatorPrivate::Vertices::init(int maxVertices)
{
if (!storage || maxVertices > allocated) {
int size = qMax((int)default_alloc, maxVertices);
- storage = (Vertex *)realloc(storage, size*sizeof(Vertex));
- sorted = (Vertex **)realloc(sorted, size*sizeof(Vertex *));
+ storage = q_check_ptr((Vertex *)realloc(storage, size*sizeof(Vertex)));
+ sorted = q_check_ptr((Vertex **)realloc(sorted, size*sizeof(Vertex *)));
allocated = maxVertices;
}
}
@@ -739,7 +739,7 @@ void QTessellatorPrivate::cancelCoincidingEdges()
if (testListSize > tlSize - 2) {
tlSize = qMax(tlSize*2, 16);
- tl = (QCoincidingEdge *)realloc(tl, tlSize*sizeof(QCoincidingEdge));
+ tl = q_check_ptr((QCoincidingEdge *)realloc(tl, tlSize*sizeof(QCoincidingEdge)));
}
if (n->flags & (LineBeforeStarts|LineBeforeHorizontal)) {
tl[testListSize].start = n;
diff --git a/src/gui/painting/qwindowsurface_raster_p.h b/src/gui/painting/qwindowsurface_raster_p.h
index b3256b3..4ee2047 100644
--- a/src/gui/painting/qwindowsurface_raster_p.h
+++ b/src/gui/painting/qwindowsurface_raster_p.h
@@ -108,7 +108,7 @@ public:
private:
void prepareBuffer(QImage::Format format, QWidget *widget);
- Q_DECLARE_PRIVATE(QRasterWindowSurface)
+ Q_DECLARE_SCOPED_PRIVATE(QRasterWindowSurface)
QScopedPointer<QRasterWindowSurfacePrivate> d_ptr;
};
diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index e81adcc..5de4317 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -75,8 +75,8 @@ QS60WindowSurface::QS60WindowSurface(QWidget* widget)
// We create empty CFbsBitmap here -> it will be resized in setGeometry
- d_ptr->bitmap = new (ELeave) CFbsBitmap;
- User::LeaveIfError( d_ptr->bitmap->Create(TSize(0, 0), mode ) );
+ d_ptr->bitmap = q_check_ptr(new CFbsBitmap); // CBase derived object needs check on new
+ qt_throwIfError( d_ptr->bitmap->Create(TSize(0, 0), mode ) );
updatePaintDeviceOnBitmap();
@@ -141,7 +141,8 @@ bool QS60WindowSurface::scroll(const QRegion &area, int dx, int dy)
if (d_ptr->device.isNull())
return false;
- CFbsBitmapDevice *bitmapDevice = CFbsBitmapDevice::NewL(d_ptr->bitmap);
+ CFbsBitmapDevice *bitmapDevice = 0;
+ QT_TRAP_THROWING(bitmapDevice = CFbsBitmapDevice::NewL(d_ptr->bitmap));
CBitmapContext *bitmapContext;
TInt err = bitmapDevice->CreateBitmapContext(bitmapContext);
if (err != KErrNone) {
@@ -177,7 +178,7 @@ void QS60WindowSurface::setGeometry(const QRect& rect)
QWindowSurface::setGeometry(rect);
TRect nativeRect(qt_QRect2TRect(rect));
- User::LeaveIfError(d_ptr->bitmap->Resize(nativeRect.Size()));
+ qt_throwIfError(d_ptr->bitmap->Resize(nativeRect.Size()));
if (!rect.isNull())
updatePaintDeviceOnBitmap();
diff --git a/src/gui/painting/qwindowsurface_s60_p.h b/src/gui/painting/qwindowsurface_s60_p.h
index 40a866d..6a31ced 100644
--- a/src/gui/painting/qwindowsurface_s60_p.h
+++ b/src/gui/painting/qwindowsurface_s60_p.h
@@ -81,7 +81,7 @@ public:
static void unlockBitmapHeap();
CFbsBitmap *symbianBitmap() const;
-
+
private:
void updatePaintDeviceOnBitmap();