Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
2151272e
Commit
2151272e
authored
Sep 22, 2009
by
Vincent Povirk
Committed by
Alexandre Julliard
Sep 23, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winex11: Re-add the optimization for blending 1x1 pixel bitmaps.
parent
d20d4929
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
7 deletions
+10
-7
xrender.c
dlls/winex11.drv/xrender.c
+10
-7
No files found.
dlls/winex11.drv/xrender.c
View file @
2151272e
...
...
@@ -1834,14 +1834,10 @@ BOOL CDECL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT wid
heightSrc
=
pts
[
1
].
y
-
pts
[
0
].
y
;
if
(
!
widthDst
||
!
heightDst
||
!
widthSrc
||
!
heightSrc
)
return
TRUE
;
/* If the source is a 1x1 bitmap, tiling is equivalent to stretching, but
tiling is much faster. Therefore, we do no stretching in this case. */
repeat_src
=
widthSrc
==
1
&&
heightSrc
==
1
;
#ifndef HAVE_XRENDERSETPICTURETRANSFORM
if
(
(
widthDst
!=
widthSrc
||
heightDst
!=
heightSrc
)
&&
!
repeat_s
rc
)
if
(
widthDst
!=
widthSrc
||
heightDst
!=
heightS
rc
)
#else
if
(
!
pXRenderSetPictureTransform
&&
!
repeat_src
)
if
(
!
pXRenderSetPictureTransform
)
#endif
{
FIXME
(
"Unable to Stretch, XRenderSetPictureTransform is currently required
\n
"
);
...
...
@@ -1859,6 +1855,10 @@ BOOL CDECL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT wid
return
FALSE
;
}
/* If the source is a 1x1 bitmap, tiling is equivalent to stretching, but
tiling is much faster. Therefore, we do no stretching in this case. */
repeat_src
=
dib
.
dsBmih
.
biWidth
==
1
&&
abs
(
dib
.
dsBmih
.
biHeight
)
==
1
;
if
(
xSrc
<
0
||
ySrc
<
0
||
widthSrc
<
0
||
heightSrc
<
0
||
xSrc
+
widthSrc
>
dib
.
dsBmih
.
biWidth
||
ySrc
+
heightSrc
>
abs
(
dib
.
dsBmih
.
biHeight
))
{
...
...
@@ -1966,7 +1966,10 @@ BOOL CDECL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT wid
/* Make sure we ALWAYS set the transformation matrix even if we don't need to scale. The reason is
* that later on we want to reuse pictures (it can bring a lot of extra performance) and each time
* a different transformation matrix might have been used. */
set_xrender_transformation
(
src_pict
,
widthSrc
/
(
double
)
widthDst
,
heightSrc
/
(
double
)
heightDst
,
0
,
0
);
if
(
repeat_src
)
set_xrender_transformation
(
src_pict
,
1
.
0
,
1
.
0
,
0
,
0
);
else
set_xrender_transformation
(
src_pict
,
widthSrc
/
(
double
)
widthDst
,
heightSrc
/
(
double
)
heightDst
,
0
,
0
);
pXRenderComposite
(
gdi_display
,
PictOpOver
,
src_pict
,
0
,
dst_pict
,
0
,
0
,
0
,
0
,
xDst
+
devDst
->
dc_rect
.
left
,
yDst
+
devDst
->
dc_rect
.
top
,
widthDst
,
heightDst
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment