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
86ec1697
Commit
86ec1697
authored
Nov 02, 2016
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Get rid of the clipboard owner thread field.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
a5f42fcd
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
22 deletions
+17
-22
clipboard.c
server/clipboard.c
+17
-22
No files found.
server/clipboard.c
View file @
86ec1697
...
@@ -52,8 +52,7 @@ struct clipboard
...
@@ -52,8 +52,7 @@ struct clipboard
struct
object
obj
;
/* object header */
struct
object
obj
;
/* object header */
struct
thread
*
open_thread
;
/* thread id that has clipboard open */
struct
thread
*
open_thread
;
/* thread id that has clipboard open */
user_handle_t
open_win
;
/* window that has clipboard open */
user_handle_t
open_win
;
/* window that has clipboard open */
struct
thread
*
owner_thread
;
/* thread id that owns the clipboard */
user_handle_t
owner
;
/* window that owns the clipboard */
user_handle_t
owner_win
;
/* window that owns the clipboard data */
user_handle_t
viewer
;
/* first window in clipboard viewer list */
user_handle_t
viewer
;
/* first window in clipboard viewer list */
unsigned
int
lcid
;
/* locale id to use for synthesizing text formats */
unsigned
int
lcid
;
/* locale id to use for synthesizing text formats */
unsigned
int
seqno
;
/* clipboard change sequence number */
unsigned
int
seqno
;
/* clipboard change sequence number */
...
@@ -141,9 +140,9 @@ static void clipboard_dump( struct object *obj, int verbose )
...
@@ -141,9 +140,9 @@ static void clipboard_dump( struct object *obj, int verbose )
{
{
struct
clipboard
*
clipboard
=
(
struct
clipboard
*
)
obj
;
struct
clipboard
*
clipboard
=
(
struct
clipboard
*
)
obj
;
fprintf
(
stderr
,
"Clipboard open_thread=%p open_win=%08x owner
_thread=%p owner_win
=%08x viewer=%08x seq=%u
\n
"
,
fprintf
(
stderr
,
"Clipboard open_thread=%p open_win=%08x owner=%08x viewer=%08x seq=%u
\n
"
,
clipboard
->
open_thread
,
clipboard
->
open_win
,
clipboard
->
owner_thread
,
clipboard
->
open_thread
,
clipboard
->
open_win
,
clipboard
->
owner
_win
,
clipboard
->
viewer
,
clipboard
->
seqno
);
clipboard
->
owner
,
clipboard
->
viewer
,
clipboard
->
seqno
);
}
}
static
void
clipboard_destroy
(
struct
object
*
obj
)
static
void
clipboard_destroy
(
struct
object
*
obj
)
...
@@ -168,8 +167,7 @@ static struct clipboard *get_process_clipboard(void)
...
@@ -168,8 +167,7 @@ static struct clipboard *get_process_clipboard(void)
{
{
clipboard
->
open_thread
=
NULL
;
clipboard
->
open_thread
=
NULL
;
clipboard
->
open_win
=
0
;
clipboard
->
open_win
=
0
;
clipboard
->
owner_thread
=
NULL
;
clipboard
->
owner
=
0
;
clipboard
->
owner_win
=
0
;
clipboard
->
viewer
=
0
;
clipboard
->
viewer
=
0
;
clipboard
->
seqno
=
0
;
clipboard
->
seqno
=
0
;
clipboard
->
format_count
=
0
;
clipboard
->
format_count
=
0
;
...
@@ -297,8 +295,7 @@ static user_handle_t release_clipboard( struct clipboard *clipboard )
...
@@ -297,8 +295,7 @@ static user_handle_t release_clipboard( struct clipboard *clipboard )
struct
clip_format
*
format
,
*
next
;
struct
clip_format
*
format
,
*
next
;
int
changed
=
0
;
int
changed
=
0
;
clipboard
->
owner_win
=
0
;
clipboard
->
owner
=
0
;
clipboard
->
owner_thread
=
NULL
;
/* free the delayed-rendered formats, since we no longer have an owner to render them */
/* free the delayed-rendered formats, since we no longer have an owner to render them */
LIST_FOR_EACH_ENTRY_SAFE
(
format
,
next
,
&
clipboard
->
formats
,
struct
clip_format
,
entry
)
LIST_FOR_EACH_ENTRY_SAFE
(
format
,
next
,
&
clipboard
->
formats
,
struct
clip_format
,
entry
)
...
@@ -325,11 +322,11 @@ void cleanup_clipboard_window( struct desktop *desktop, user_handle_t window )
...
@@ -325,11 +322,11 @@ void cleanup_clipboard_window( struct desktop *desktop, user_handle_t window )
remove_listener
(
clipboard
,
window
);
remove_listener
(
clipboard
,
window
);
if
(
clipboard
->
viewer
==
window
)
clipboard
->
viewer
=
0
;
if
(
clipboard
->
viewer
==
window
)
clipboard
->
viewer
=
0
;
if
(
clipboard
->
owner
_win
==
window
)
release_clipboard
(
clipboard
);
if
(
clipboard
->
owner
==
window
)
release_clipboard
(
clipboard
);
if
(
clipboard
->
open_win
==
window
)
if
(
clipboard
->
open_win
==
window
)
{
{
user_handle_t
viewer
=
close_clipboard
(
clipboard
);
user_handle_t
viewer
=
close_clipboard
(
clipboard
);
if
(
viewer
)
send_notify_message
(
viewer
,
WM_DRAWCLIPBOARD
,
clipboard
->
owner
_win
,
0
);
if
(
viewer
)
send_notify_message
(
viewer
,
WM_DRAWCLIPBOARD
,
clipboard
->
owner
,
0
);
}
}
}
}
...
@@ -344,11 +341,10 @@ void cleanup_clipboard_thread(struct thread *thread)
...
@@ -344,11 +341,10 @@ void cleanup_clipboard_thread(struct thread *thread)
if
((
clipboard
=
winstation
->
clipboard
))
if
((
clipboard
=
winstation
->
clipboard
))
{
{
if
(
thread
==
clipboard
->
owner_thread
)
clipboard
->
owner_thread
=
NULL
;
if
(
thread
==
clipboard
->
open_thread
)
if
(
thread
==
clipboard
->
open_thread
)
{
{
user_handle_t
viewer
=
close_clipboard
(
clipboard
);
user_handle_t
viewer
=
close_clipboard
(
clipboard
);
if
(
viewer
)
send_notify_message
(
viewer
,
WM_DRAWCLIPBOARD
,
clipboard
->
owner
_win
,
0
);
if
(
viewer
)
send_notify_message
(
viewer
,
WM_DRAWCLIPBOARD
,
clipboard
->
owner
,
0
);
}
}
}
}
release_object
(
winstation
);
release_object
(
winstation
);
...
@@ -373,7 +369,7 @@ DECL_HANDLER(open_clipboard)
...
@@ -373,7 +369,7 @@ DECL_HANDLER(open_clipboard)
clipboard
->
open_win
=
win
;
clipboard
->
open_win
=
win
;
clipboard
->
open_thread
=
current
;
clipboard
->
open_thread
=
current
;
reply
->
owner
=
clipboard
->
owner
_win
;
reply
->
owner
=
clipboard
->
owner
;
}
}
...
@@ -390,7 +386,7 @@ DECL_HANDLER(close_clipboard)
...
@@ -390,7 +386,7 @@ DECL_HANDLER(close_clipboard)
return
;
return
;
}
}
reply
->
viewer
=
close_clipboard
(
clipboard
);
reply
->
viewer
=
close_clipboard
(
clipboard
);
reply
->
owner
=
clipboard
->
owner
_win
;
reply
->
owner
=
clipboard
->
owner
;
}
}
...
@@ -454,7 +450,7 @@ DECL_HANDLER(get_clipboard_data)
...
@@ -454,7 +450,7 @@ DECL_HANDLER(get_clipboard_data)
reply
->
from
=
format
->
from
;
reply
->
from
=
format
->
from
;
reply
->
total
=
format
->
size
;
reply
->
total
=
format
->
size
;
reply
->
seqno
=
format
->
seqno
;
reply
->
seqno
=
format
->
seqno
;
if
(
!
format
->
data
&&
!
format
->
from
)
reply
->
owner
=
clipboard
->
owner
_win
;
if
(
!
format
->
data
&&
!
format
->
from
)
reply
->
owner
=
clipboard
->
owner
;
if
(
req
->
cached
&&
req
->
seqno
==
format
->
seqno
)
return
;
/* client-side cache still valid */
if
(
req
->
cached
&&
req
->
seqno
==
format
->
seqno
)
return
;
/* client-side cache still valid */
if
(
format
->
size
<=
get_reply_max_size
())
set_reply_data
(
format
->
data
,
format
->
size
);
if
(
format
->
size
<=
get_reply_max_size
())
set_reply_data
(
format
->
data
,
format
->
size
);
else
set_error
(
STATUS_BUFFER_OVERFLOW
);
else
set_error
(
STATUS_BUFFER_OVERFLOW
);
...
@@ -530,8 +526,7 @@ DECL_HANDLER(empty_clipboard)
...
@@ -530,8 +526,7 @@ DECL_HANDLER(empty_clipboard)
}
}
free_clipboard_formats
(
clipboard
);
free_clipboard_formats
(
clipboard
);
clipboard
->
owner_win
=
clipboard
->
open_win
;
clipboard
->
owner
=
clipboard
->
open_win
;
clipboard
->
owner_thread
=
clipboard
->
open_thread
;
clipboard
->
seqno
++
;
clipboard
->
seqno
++
;
}
}
...
@@ -546,10 +541,10 @@ DECL_HANDLER(release_clipboard)
...
@@ -546,10 +541,10 @@ DECL_HANDLER(release_clipboard)
if
(
!
(
owner
=
get_valid_window_handle
(
req
->
owner
)))
return
;
if
(
!
(
owner
=
get_valid_window_handle
(
req
->
owner
)))
return
;
if
(
clipboard
->
owner
_win
==
owner
)
if
(
clipboard
->
owner
==
owner
)
{
{
reply
->
viewer
=
release_clipboard
(
clipboard
);
reply
->
viewer
=
release_clipboard
(
clipboard
);
reply
->
owner
=
clipboard
->
owner
_win
;
reply
->
owner
=
clipboard
->
owner
;
}
}
else
set_error
(
STATUS_INVALID_OWNER
);
else
set_error
(
STATUS_INVALID_OWNER
);
}
}
...
@@ -563,7 +558,7 @@ DECL_HANDLER(get_clipboard_info)
...
@@ -563,7 +558,7 @@ DECL_HANDLER(get_clipboard_info)
if
(
!
clipboard
)
return
;
if
(
!
clipboard
)
return
;
reply
->
window
=
clipboard
->
open_win
;
reply
->
window
=
clipboard
->
open_win
;
reply
->
owner
=
clipboard
->
owner
_win
;
reply
->
owner
=
clipboard
->
owner
;
reply
->
viewer
=
clipboard
->
viewer
;
reply
->
viewer
=
clipboard
->
viewer
;
reply
->
seqno
=
clipboard
->
seqno
;
reply
->
seqno
=
clipboard
->
seqno
;
}
}
...
@@ -580,7 +575,7 @@ DECL_HANDLER(set_clipboard_viewer)
...
@@ -580,7 +575,7 @@ DECL_HANDLER(set_clipboard_viewer)
if
(
req
->
previous
&&
!
(
previous
=
get_valid_window_handle
(
req
->
previous
)))
return
;
if
(
req
->
previous
&&
!
(
previous
=
get_valid_window_handle
(
req
->
previous
)))
return
;
reply
->
old_viewer
=
clipboard
->
viewer
;
reply
->
old_viewer
=
clipboard
->
viewer
;
reply
->
owner
=
clipboard
->
owner
_win
;
reply
->
owner
=
clipboard
->
owner
;
if
(
!
previous
||
clipboard
->
viewer
==
previous
)
if
(
!
previous
||
clipboard
->
viewer
==
previous
)
clipboard
->
viewer
=
viewer
;
clipboard
->
viewer
=
viewer
;
...
...
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