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
b4255d29
Commit
b4255d29
authored
Jan 27, 2009
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Release the GDI lock when calling the DC DeleteObject function.
parent
8f829034
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
12 additions
and
7 deletions
+12
-7
gdiobj.c
dlls/gdi32/gdiobj.c
+12
-7
No files found.
dlls/gdi32/gdiobj.c
View file @
b4255d29
...
...
@@ -808,6 +808,7 @@ BOOL WINAPI DeleteObject( HGDIOBJ obj )
{
/* Check if object is valid */
struct
hdc_list
*
hdcs_head
;
GDIOBJHDR
*
header
;
if
(
HIWORD
(
obj
))
return
FALSE
;
...
...
@@ -821,21 +822,25 @@ BOOL WINAPI DeleteObject( HGDIOBJ obj )
return
TRUE
;
}
while
(
header
->
hdcs
)
while
(
(
hdcs_head
=
header
->
hdcs
)
!=
NULL
)
{
DC
*
dc
=
get_dc_ptr
(
header
->
hdcs
->
hdc
);
struct
hdc_list
*
tmp
;
DC
*
dc
=
get_dc_ptr
(
hdcs_head
->
hdc
);
header
->
hdcs
=
hdcs_head
->
next
;
TRACE
(
"hdc %p has interest in %p
\n
"
,
hdcs_head
->
hdc
,
obj
);
TRACE
(
"hdc %p has interest in %p
\n
"
,
header
->
hdcs
->
hdc
,
obj
);
if
(
dc
)
{
if
(
dc
->
funcs
->
pDeleteObject
)
{
GDI_ReleaseObj
(
obj
);
/* release the GDI lock */
dc
->
funcs
->
pDeleteObject
(
dc
->
physDev
,
obj
);
header
=
GDI_GetObjPtr
(
obj
,
MAGIC_DONTCARE
);
/* and grab it again */
}
release_dc_ptr
(
dc
);
}
tmp
=
header
->
hdcs
;
header
->
hdcs
=
header
->
hdcs
->
next
;
HeapFree
(
GetProcessHeap
(),
0
,
tmp
);
HeapFree
(
GetProcessHeap
(),
0
,
hdcs_head
);
if
(
!
header
)
return
FALSE
;
}
if
(
header
->
dwCount
)
...
...
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