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
13ff2919
Commit
13ff2919
authored
Sep 19, 2016
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winex11: Use the correct data type for property atoms.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
63201471
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
36 deletions
+36
-36
clipboard.c
dlls/winex11.drv/clipboard.c
+36
-36
No files found.
dlls/winex11.drv/clipboard.c
View file @
13ff2919
...
...
@@ -108,8 +108,8 @@ typedef HANDLE (*DRVIMPORTFUNC)(Display *d, Window w, Atom prop);
typedef
struct
clipboard_format
{
struct
list
entry
;
UINT
wFormatID
;
UINT
drvData
;
UINT
id
;
Atom
atom
;
DRVIMPORTFUNC
lpDrvImportFunc
;
DRVEXPORTFUNC
lpDrvExportFunc
;
}
WINE_CLIPFORMAT
,
*
LPWINE_CLIPFORMAT
;
...
...
@@ -310,11 +310,11 @@ void X11DRV_InitClipboard(void)
for
(
i
=
0
;
i
<
count
;
i
++
)
{
if
(
builtin_formats
[
i
].
name
)
formats
[
i
].
wFormatID
=
RegisterClipboardFormatW
(
builtin_formats
[
i
].
name
);
formats
[
i
].
id
=
RegisterClipboardFormatW
(
builtin_formats
[
i
].
name
);
else
formats
[
i
].
wFormatID
=
builtin_formats
[
i
].
id
;
formats
[
i
].
id
=
builtin_formats
[
i
].
id
;
formats
[
i
].
drvData
=
GET_ATOM
(
builtin_formats
[
i
].
data
);
formats
[
i
].
atom
=
GET_ATOM
(
builtin_formats
[
i
].
data
);
formats
[
i
].
lpDrvImportFunc
=
builtin_formats
[
i
].
import
;
formats
[
i
].
lpDrvExportFunc
=
builtin_formats
[
i
].
export
;
list_add_tail
(
&
format_list
,
&
formats
[
i
].
entry
);
...
...
@@ -338,7 +338,7 @@ static void intern_atoms(void)
count
=
0
;
LIST_FOR_EACH_ENTRY
(
format
,
&
format_list
,
WINE_CLIPFORMAT
,
entry
)
if
(
!
format
->
drvData
)
count
++
;
if
(
!
format
->
atom
)
count
++
;
if
(
!
count
)
return
;
display
=
thread_init_display
();
...
...
@@ -348,8 +348,8 @@ static void intern_atoms(void)
i
=
0
;
LIST_FOR_EACH_ENTRY
(
format
,
&
format_list
,
WINE_CLIPFORMAT
,
entry
)
if
(
!
format
->
drvData
)
{
if
(
GetClipboardFormatNameW
(
format
->
wFormatID
,
buffer
,
256
)
>
0
)
if
(
!
format
->
atom
)
{
if
(
GetClipboardFormatNameW
(
format
->
id
,
buffer
,
256
)
>
0
)
{
/* use defined format name */
len
=
WideCharToMultiByte
(
CP_UNIXCP
,
0
,
buffer
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
...
...
@@ -360,7 +360,7 @@ static void intern_atoms(void)
* which is normally used by GetClipboardFormatNameW
*/
static
const
WCHAR
fmt
[]
=
{
'#'
,
'%'
,
'u'
,
0
};
len
=
sprintfW
(
buffer
,
fmt
,
format
->
wFormatID
)
+
1
;
len
=
sprintfW
(
buffer
,
fmt
,
format
->
id
)
+
1
;
}
names
[
i
]
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
WideCharToMultiByte
(
CP_UNIXCP
,
0
,
buffer
,
-
1
,
names
[
i
++
],
len
,
NULL
,
NULL
);
...
...
@@ -370,9 +370,9 @@ static void intern_atoms(void)
i
=
0
;
LIST_FOR_EACH_ENTRY
(
format
,
&
format_list
,
WINE_CLIPFORMAT
,
entry
)
if
(
!
format
->
drvData
)
{
if
(
!
format
->
atom
)
{
HeapFree
(
GetProcessHeap
(),
0
,
names
[
i
]);
format
->
drvData
=
atoms
[
i
++
];
format
->
atom
=
atoms
[
i
++
];
}
HeapFree
(
GetProcessHeap
(),
0
,
names
);
...
...
@@ -391,16 +391,16 @@ static struct clipboard_format *register_format( UINT id, Atom prop )
/* walk format chain to see if it's already registered */
LIST_FOR_EACH_ENTRY
(
format
,
&
format_list
,
struct
clipboard_format
,
entry
)
if
(
format
->
wFormatID
==
id
)
return
format
;
if
(
format
->
id
==
id
)
return
format
;
if
(
!
(
format
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
format
)
)))
return
NULL
;
format
->
wFormatID
=
id
;
format
->
drvData
=
prop
;
format
->
id
=
id
;
format
->
atom
=
prop
;
format
->
lpDrvImportFunc
=
import_data
;
format
->
lpDrvExportFunc
=
export_data
;
list_add_tail
(
&
format_list
,
&
format
->
entry
);
TRACE
(
"Registering format %s atom %l
x
\n
"
,
debugstr_format
(
id
),
prop
);
TRACE
(
"Registering format %s atom %l
d
\n
"
,
debugstr_format
(
id
),
prop
);
return
format
;
}
...
...
@@ -408,7 +408,7 @@ static struct clipboard_format *register_format( UINT id, Atom prop )
/**************************************************************************
* X11DRV_CLIPBOARD_LookupProperty
*/
static
LPWINE_CLIPFORMAT
X11DRV_CLIPBOARD_LookupProperty
(
LPWINE_CLIPFORMAT
current
,
UINT
drvData
)
static
struct
clipboard_format
*
X11DRV_CLIPBOARD_LookupProperty
(
struct
clipboard_format
*
current
,
Atom
prop
)
{
for
(;;)
{
...
...
@@ -417,9 +417,9 @@ static LPWINE_CLIPFORMAT X11DRV_CLIPBOARD_LookupProperty(LPWINE_CLIPFORMAT curre
while
((
ptr
=
list_next
(
&
format_list
,
ptr
)))
{
LPWINE_CLIPFORMAT
lpFormat
=
LIST_ENTRY
(
ptr
,
WINE_CLIPFORMAT
,
entry
);
if
(
lpFormat
->
drvData
==
drvData
)
return
lpF
ormat
;
if
(
!
lpFormat
->
drvData
)
need_intern
=
TRUE
;
struct
clipboard_format
*
format
=
LIST_ENTRY
(
ptr
,
struct
clipboard_format
,
entry
);
if
(
format
->
atom
==
prop
)
return
f
ormat
;
if
(
!
format
->
atom
)
need_intern
=
TRUE
;
}
if
(
!
need_intern
)
return
NULL
;
intern_atoms
();
...
...
@@ -1319,7 +1319,7 @@ HANDLE X11DRV_CLIPBOARD_ImportSelection(Display *d, Atom target, Window w, Atom
clipFormat
=
X11DRV_CLIPBOARD_LookupProperty
(
NULL
,
target
);
if
(
clipFormat
)
{
*
windowsFormat
=
clipFormat
->
wFormatID
;
*
windowsFormat
=
clipFormat
->
id
;
return
clipFormat
->
lpDrvImportFunc
(
d
,
w
,
prop
);
}
return
NULL
;
...
...
@@ -1967,9 +1967,9 @@ static VOID X11DRV_CLIPBOARD_InsertSelectionProperties(Display *display, Atom* p
*/
while
(
lpFormat
)
{
TRACE
(
"Atom#%d Property(%d): --> F
ormat %s
\n
"
,
i
,
lpFormat
->
drvData
,
debugstr_format
(
lpFormat
->
wFormatID
)
);
X11DRV_CLIPBOARD_InsertClipboardData
(
lpFormat
->
wFormatID
,
0
,
lpFormat
,
FALSE
);
TRACE
(
"atom #%d property(%ld) -> f
ormat %s
\n
"
,
i
,
lpFormat
->
atom
,
debugstr_format
(
lpFormat
->
id
)
);
X11DRV_CLIPBOARD_InsertClipboardData
(
lpFormat
->
id
,
0
,
lpFormat
,
FALSE
);
lpFormat
=
X11DRV_CLIPBOARD_LookupProperty
(
lpFormat
,
properties
[
i
]);
}
}
...
...
@@ -2010,9 +2010,9 @@ static VOID X11DRV_CLIPBOARD_InsertSelectionProperties(Display *display, Atom* p
ERR
(
"Failed to register %s property. Type will not be cached.
\n
"
,
names
[
i
]);
continue
;
}
TRACE
(
"Atom#%d Property(%d): --> F
ormat %s
\n
"
,
i
,
lpFormat
->
drvData
,
debugstr_format
(
lpFormat
->
wFormatID
)
);
X11DRV_CLIPBOARD_InsertClipboardData
(
lpFormat
->
wFormatID
,
0
,
lpFormat
,
FALSE
);
TRACE
(
"atom #%d property(%ld) -> f
ormat %s
\n
"
,
i
,
lpFormat
->
atom
,
debugstr_format
(
lpFormat
->
id
)
);
X11DRV_CLIPBOARD_InsertClipboardData
(
lpFormat
->
id
,
0
,
lpFormat
,
FALSE
);
}
for
(
i
=
0
;
i
<
nb_atoms
;
i
++
)
XFree
(
names
[
i
]
);
HeapFree
(
GetProcessHeap
(),
0
,
names
);
...
...
@@ -2159,11 +2159,11 @@ static BOOL X11DRV_CLIPBOARD_ReadSelectionData(Display *display, LPWINE_CLIPDATA
return
FALSE
;
}
TRACE
(
"Requesting conversion of %s property (%d) from selection type %08x
\n
"
,
debugstr_format
(
lpData
->
lpFormat
->
wFormatID
),
lpData
->
lpFormat
->
drvData
,
TRACE
(
"Requesting conversion of %s property (%
l
d) from selection type %08x
\n
"
,
debugstr_format
(
lpData
->
lpFormat
->
id
),
lpData
->
lpFormat
->
atom
,
(
UINT
)
selectionCacheSrc
);
XConvertSelection
(
display
,
selectionCacheSrc
,
lpData
->
lpFormat
->
drvData
,
XConvertSelection
(
display
,
selectionCacheSrc
,
lpData
->
lpFormat
->
atom
,
x11drv_atom
(
SELECTION_DATA
),
w
,
CurrentTime
);
/* wait until SelectionNotify is received */
...
...
@@ -2745,8 +2745,8 @@ static Atom X11DRV_SelectionRequest_TARGETS( Display *display, Window requestor,
LIST_FOR_EACH_ENTRY
(
lpData
,
&
data_list
,
WINE_CLIPDATA
,
entry
)
LIST_FOR_EACH_ENTRY
(
format
,
&
format_list
,
WINE_CLIPFORMAT
,
entry
)
if
((
format
->
wFormatID
==
lpData
->
wFormatID
)
&&
format
->
lpDrvExportFunc
&&
format
->
drvData
)
if
((
format
->
id
==
lpData
->
wFormatID
)
&&
format
->
lpDrvExportFunc
&&
format
->
atom
)
cTargets
++
;
TRACE
(
" found %d formats
\n
"
,
cTargets
);
...
...
@@ -2761,9 +2761,9 @@ static Atom X11DRV_SelectionRequest_TARGETS( Display *display, Window requestor,
LIST_FOR_EACH_ENTRY
(
lpData
,
&
data_list
,
WINE_CLIPDATA
,
entry
)
LIST_FOR_EACH_ENTRY
(
format
,
&
format_list
,
WINE_CLIPFORMAT
,
entry
)
if
((
format
->
wFormatID
==
lpData
->
wFormatID
)
&&
format
->
lpDrvExportFunc
&&
format
->
drvData
)
targets
[
i
++
]
=
format
->
drvData
;
if
((
format
->
id
==
lpData
->
wFormatID
)
&&
format
->
lpDrvExportFunc
&&
format
->
atom
)
targets
[
i
++
]
=
format
->
atom
;
if
(
TRACE_ON
(
clipboard
))
{
...
...
@@ -2947,7 +2947,7 @@ static void X11DRV_HandleSelectionRequest( HWND hWnd, XSelectionRequestEvent *ev
if
(
lpFormat
&&
lpFormat
->
lpDrvExportFunc
)
{
LPWINE_CLIPDATA
lpData
=
X11DRV_CLIPBOARD_LookupData
(
lpFormat
->
wFormatID
);
LPWINE_CLIPDATA
lpData
=
X11DRV_CLIPBOARD_LookupData
(
lpFormat
->
id
);
if
(
lpData
)
{
...
...
@@ -2961,7 +2961,7 @@ static void X11DRV_HandleSelectionRequest( HWND hWnd, XSelectionRequestEvent *ev
int
mode
=
PropModeReplace
;
TRACE
(
"
\t
Updating property %s, %d bytes
\n
"
,
debugstr_format
(
lpFormat
->
wFormatID
),
cBytes
);
debugstr_format
(
lpFormat
->
id
),
cBytes
);
do
{
int
nelements
=
min
(
cBytes
,
65536
);
...
...
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