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
498e3cf2
Commit
498e3cf2
authored
Sep 15, 2011
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winex11: Remove the XRender support in the X11 driver StretchBlt implementation.
parent
14f6c427
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
4 additions
and
116 deletions
+4
-116
bitblt.c
dlls/winex11.drv/bitblt.c
+4
-7
x11drv.h
dlls/winex11.drv/x11drv.h
+0
-3
xrender.c
dlls/winex11.drv/xrender.c
+0
-106
No files found.
dlls/winex11.drv/bitblt.c
View file @
498e3cf2
...
...
@@ -1404,13 +1404,10 @@ BOOL X11DRV_StretchBlt( PHYSDEV dst_dev, struct bitblt_coords *dst,
if
(
physDevDst
!=
physDevSrc
)
X11DRV_CoerceDIBSection
(
physDevSrc
,
DIB_Status_GdiMod
);
if
(
!
X11DRV_XRender_GetSrcAreaStretch
(
physDevSrc
,
physDevDst
,
src_pixmap
,
tmpGC
,
src
,
dst
))
{
if
(
fStretch
)
BITBLT_GetSrcAreaStretch
(
physDevSrc
,
physDevDst
,
src_pixmap
,
tmpGC
,
src
,
dst
);
else
BITBLT_GetSrcArea
(
physDevSrc
,
physDevDst
,
src_pixmap
,
tmpGC
,
&
src
->
visrect
);
}
if
(
fStretch
)
BITBLT_GetSrcAreaStretch
(
physDevSrc
,
physDevDst
,
src_pixmap
,
tmpGC
,
src
,
dst
);
else
BITBLT_GetSrcArea
(
physDevSrc
,
physDevDst
,
src_pixmap
,
tmpGC
,
&
src
->
visrect
);
execute_rop
(
physDevDst
,
src_pixmap
,
tmpGC
,
&
dst
->
visrect
,
rop
);
...
...
dlls/winex11.drv/x11drv.h
View file @
498e3cf2
...
...
@@ -305,9 +305,6 @@ extern const struct gdi_dc_funcs *X11DRV_XRender_Init(void) DECLSPEC_HIDDEN;
extern
void
X11DRV_XRender_Finalize
(
void
)
DECLSPEC_HIDDEN
;
extern
void
X11DRV_XRender_CopyBrush
(
X11DRV_PDEVICE
*
physDev
,
X_PHYSBITMAP
*
physBitmap
,
int
width
,
int
height
)
DECLSPEC_HIDDEN
;
extern
BOOL
X11DRV_XRender_SetPhysBitmapDepth
(
X_PHYSBITMAP
*
physBitmap
,
int
bits_pixel
,
const
DIBSECTION
*
dib
)
DECLSPEC_HIDDEN
;
BOOL
X11DRV_XRender_GetSrcAreaStretch
(
X11DRV_PDEVICE
*
physDevSrc
,
X11DRV_PDEVICE
*
physDevDst
,
Pixmap
pixmap
,
GC
gc
,
const
struct
bitblt_coords
*
src
,
const
struct
bitblt_coords
*
dst
)
DECLSPEC_HIDDEN
;
extern
Drawable
get_glxdrawable
(
X11DRV_PDEVICE
*
physDev
)
DECLSPEC_HIDDEN
;
extern
BOOL
destroy_glxpixmap
(
Display
*
display
,
XID
glxpixmap
)
DECLSPEC_HIDDEN
;
...
...
dlls/winex11.drv/xrender.c
View file @
498e3cf2
...
...
@@ -2662,106 +2662,6 @@ void X11DRV_XRender_CopyBrush(X11DRV_PDEVICE *physDev, X_PHYSBITMAP *physBitmap,
wine_tsx11_unlock
();
}
BOOL
X11DRV_XRender_GetSrcAreaStretch
(
X11DRV_PDEVICE
*
physDevSrc
,
X11DRV_PDEVICE
*
physDevDst
,
Pixmap
pixmap
,
GC
gc
,
const
struct
bitblt_coords
*
src
,
const
struct
bitblt_coords
*
dst
)
{
BOOL
stretch
=
(
src
->
width
!=
dst
->
width
)
||
(
src
->
height
!=
dst
->
height
);
int
width
=
dst
->
visrect
.
right
-
dst
->
visrect
.
left
;
int
height
=
dst
->
visrect
.
bottom
-
dst
->
visrect
.
top
;
int
x_src
=
physDevSrc
->
dc_rect
.
left
+
src
->
visrect
.
left
;
int
y_src
=
physDevSrc
->
dc_rect
.
top
+
src
->
visrect
.
top
;
struct
xrender_info
*
src_info
=
get_xrender_info
(
physDevSrc
);
const
WineXRenderFormat
*
dst_format
=
get_xrender_format_from_color_shifts
(
physDevDst
->
depth
,
physDevDst
->
color_shifts
);
Picture
src_pict
=
0
,
dst_pict
=
0
,
mask_pict
=
0
;
BOOL
use_repeat
;
double
xscale
,
yscale
;
XRenderPictureAttributes
pa
;
pa
.
subwindow_mode
=
IncludeInferiors
;
pa
.
repeat
=
RepeatNone
;
TRACE
(
"src depth=%d widthSrc=%d heightSrc=%d xSrc=%d ySrc=%d
\n
"
,
physDevSrc
->
depth
,
src
->
width
,
src
->
height
,
x_src
,
y_src
);
TRACE
(
"dst depth=%d widthDst=%d heightDst=%d
\n
"
,
physDevDst
->
depth
,
dst
->
width
,
dst
->
height
);
if
(
!
X11DRV_XRender_Installed
)
{
TRACE
(
"Not using XRender since it is not available or disabled
\n
"
);
return
FALSE
;
}
/* XRender can't handle palettes, so abort */
if
(
X11DRV_PALETTE_XPixelToPalette
)
return
FALSE
;
/* XRender is of no use in this case */
if
((
physDevDst
->
depth
==
1
)
&&
(
physDevSrc
->
depth
>
1
))
return
FALSE
;
/* Just use traditional X copy when the formats match and we don't need stretching */
if
((
src_info
->
format
->
format
==
dst_format
->
format
)
&&
!
stretch
)
{
TRACE
(
"Source and destination depth match and no stretching needed falling back to XCopyArea
\n
"
);
wine_tsx11_lock
();
XCopyArea
(
gdi_display
,
physDevSrc
->
drawable
,
pixmap
,
gc
,
x_src
,
y_src
,
width
,
height
,
0
,
0
);
wine_tsx11_unlock
();
return
TRUE
;
}
use_repeat
=
use_source_repeat
(
physDevSrc
);
if
(
!
use_repeat
)
{
xscale
=
src
->
width
/
(
double
)
dst
->
width
;
yscale
=
src
->
height
/
(
double
)
dst
->
height
;
}
else
xscale
=
yscale
=
1
;
/* no scaling needed with a repeating source */
/* mono -> color */
if
(
physDevSrc
->
depth
==
1
&&
physDevDst
->
depth
>
1
)
{
XRenderColor
fg
,
bg
;
get_xrender_color
(
dst_format
,
physDevDst
->
textPixel
,
&
fg
);
get_xrender_color
(
dst_format
,
physDevDst
->
backgroundPixel
,
&
bg
);
/* We use the source drawable as a mask */
mask_pict
=
get_xrender_picture_source
(
physDevSrc
,
use_repeat
);
/* Use backgroundPixel as the foreground color */
EnterCriticalSection
(
&
xrender_cs
);
src_pict
=
get_tile_pict
(
dst_format
,
&
bg
);
/* Create a destination picture and fill it with textPixel color as the background color */
wine_tsx11_lock
();
dst_pict
=
pXRenderCreatePicture
(
gdi_display
,
pixmap
,
dst_format
->
pict_format
,
CPSubwindowMode
|
CPRepeat
,
&
pa
);
pXRenderFillRectangle
(
gdi_display
,
PictOpSrc
,
dst_pict
,
&
fg
,
0
,
0
,
width
,
height
);
xrender_mono_blit
(
src_pict
,
mask_pict
,
dst_pict
,
x_src
,
y_src
,
0
,
0
,
xscale
,
yscale
,
width
,
height
);
if
(
dst_pict
)
pXRenderFreePicture
(
gdi_display
,
dst_pict
);
wine_tsx11_unlock
();
LeaveCriticalSection
(
&
xrender_cs
);
}
else
/* color -> color (can be at different depths) or mono -> mono */
{
if
(
physDevDst
->
depth
==
32
&&
physDevSrc
->
depth
<
32
)
mask_pict
=
get_no_alpha_mask
();
src_pict
=
get_xrender_picture_source
(
physDevSrc
,
use_repeat
);
wine_tsx11_lock
();
dst_pict
=
pXRenderCreatePicture
(
gdi_display
,
pixmap
,
dst_format
->
pict_format
,
CPSubwindowMode
|
CPRepeat
,
&
pa
);
xrender_blit
(
PictOpSrc
,
src_pict
,
mask_pict
,
dst_pict
,
x_src
,
y_src
,
0
,
0
,
xscale
,
yscale
,
width
,
height
);
if
(
dst_pict
)
pXRenderFreePicture
(
gdi_display
,
dst_pict
);
wine_tsx11_unlock
();
}
return
TRUE
;
}
static
const
struct
gdi_dc_funcs
xrender_funcs
=
{
NULL
,
/* pAbortDoc */
...
...
@@ -2913,10 +2813,4 @@ BOOL X11DRV_XRender_SetPhysBitmapDepth(X_PHYSBITMAP *physBitmap, int bits_pixel,
return
FALSE
;
}
BOOL
X11DRV_XRender_GetSrcAreaStretch
(
X11DRV_PDEVICE
*
physDevSrc
,
X11DRV_PDEVICE
*
physDevDst
,
Pixmap
pixmap
,
GC
gc
,
const
struct
bitblt_coords
*
src
,
const
struct
bitblt_coords
*
dst
)
{
return
FALSE
;
}
#endif
/* SONAME_LIBXRENDER */
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