Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
b849d791
Commit
b849d791
authored
Feb 13, 2000
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved global atoms to the server (based on the work of Sergei
Turchanov <turchanov@otvprim.ru>).
parent
4ecb75b0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
418 additions
and
78 deletions
+418
-78
kernel.spec
if1632/kernel.spec
+2
-2
user.spec
if1632/user.spec
+9
-9
server.h
include/server.h
+35
-0
winbase16.h
include/wine/winbase16.h
+2
-2
winuser16.h
include/wine/winuser16.h
+5
-9
atom.c
memory/atom.c
+0
-0
Makefile.in
server/Makefile.in
+1
-0
atom.c
server/atom.c
+281
-0
main.c
server/main.c
+1
-0
object.h
server/object.h
+4
-0
request.h
server/request.h
+8
-0
trace.c
server/trace.c
+51
-0
unicode.h
server/unicode.h
+2
-2
class.c
windows/class.c
+11
-25
message.c
windows/message.c
+1
-11
win.c
windows/win.c
+5
-18
No files found.
if1632/kernel.spec
View file @
b849d791
...
...
@@ -69,8 +69,8 @@ file krnl386.exe
66 pascal16 AllocResource(word word long) AllocResource16
67 pascal SetResourceHandler(word segstr segptr) SetResourceHandler16
68 pascal16 InitAtomTable(word) InitAtomTable16
69 pascal16 FindAtom(s
egs
tr) FindAtom16
70 pascal16 AddAtom(s
egs
tr) AddAtom16
69 pascal16 FindAtom(str) FindAtom16
70 pascal16 AddAtom(str) AddAtom16
71 pascal16 DeleteAtom(word) DeleteAtom16
72 pascal16 GetAtomName(word ptr word) GetAtomName16
73 pascal16 GetAtomHandle(word) GetAtomHandle16
...
...
if1632/user.spec
View file @
b849d791
...
...
@@ -51,7 +51,7 @@ file user.exe
47 pascal16 IsWindow(word) IsWindow16
48 pascal16 IsChild(word word) IsChild16
49 pascal16 IsWindowVisible(word) IsWindowVisible16
50 pascal16 FindWindow(s
egs
tr str) FindWindow16
50 pascal16 FindWindow(str str) FindWindow16
51 stub BEAR51 # IsTwoByteCharPrefix
52 pascal16 AnyPopup() AnyPopup16
53 pascal16 DestroyWindow(word) DestroyWindow16
...
...
@@ -118,7 +118,7 @@ file user.exe
114 pascal DispatchMessage(ptr) DispatchMessage16
115 pascal16 ReplyMessage(long) ReplyMessage16
116 pascal16 PostAppMessage(word word word long) PostAppMessage16
118 pascal16 RegisterWindowMessage(s
egstr) RegisterWindowMessage16
118 pascal16 RegisterWindowMessage(s
tr) RegisterWindowMessageA
117 pascal16 WindowFromDC(word) WindowFromDC16
119 pascal GetMessagePos() GetMessagePos
120 pascal GetMessageTime() GetMessageTime
...
...
@@ -273,10 +273,10 @@ file user.exe
265 pascal16 ShowOwnedPopups(word word) ShowOwnedPopups16
266 pascal16 SetMessageQueue(word) SetMessageQueue16
267 pascal16 ShowScrollBar(word word word) ShowScrollBar16
268 pascal16 GlobalAddAtom(s
egstr) GlobalAddAtom16
268 pascal16 GlobalAddAtom(s
tr) GlobalAddAtomA
269 pascal16 GlobalDeleteAtom(word) GlobalDeleteAtom
270 pascal16 GlobalFindAtom(s
egstr) GlobalFindAtom16
271 pascal16 GlobalGetAtomName(word ptr s_word) GlobalGetAtomName
16
270 pascal16 GlobalFindAtom(s
tr) GlobalFindAtomA
271 pascal16 GlobalGetAtomName(word ptr s_word) GlobalGetAtomName
A
272 pascal16 IsZoomed(word) IsZoomed16
273 stub ControlPanelInfo
274 stub GetNextQueueWindow
...
...
@@ -366,12 +366,12 @@ file user.exe
394 pascal16 DrawIconEx(word word word word word word word word word) DrawIconEx16
395 pascal16 GetIconInfo(word ptr) GetIconInfo16
397 pascal16 RegisterClassEx(ptr) RegisterClassEx16
398 pascal16 GetClassInfoEx(word s
egs
tr ptr) GetClassInfoEx16
398 pascal16 GetClassInfoEx(word str ptr) GetClassInfoEx16
399 pascal16 ChildWindowFromPointEx(word long word) ChildWindowFromPointEx16
400 pascal16 FinalUserInit() FinalUserInit16
402 pascal16 GetPriorityClipboardFormat(ptr s_word) GetPriorityClipboardFormat16
403 pascal16 UnregisterClass(s
egs
tr word) UnregisterClass16
404 pascal16 GetClassInfo(word s
egs
tr ptr) GetClassInfo16
403 pascal16 UnregisterClass(str word) UnregisterClass16
404 pascal16 GetClassInfo(word str ptr) GetClassInfo16
406 pascal16 CreateCursor(word word word word word ptr ptr) CreateCursor16
407 pascal16 CreateIcon(word word word word word ptr ptr) CreateIcon16
408 pascal16 CreateCursorIconIndirect(word ptr ptr ptr)
...
...
@@ -390,7 +390,7 @@ file user.exe
421 pascal16 wvsprintf(ptr str ptr) wvsprintf16
422 pascal16 DlgDirSelectEx(word ptr word word) DlgDirSelectEx16
423 pascal16 DlgDirSelectComboBoxEx(word ptr word word) DlgDirSelectComboBoxEx16
427 pascal16 FindWindowEx(word word s
egs
tr str) FindWindowEx16
427 pascal16 FindWindowEx(word word str str) FindWindowEx16
428 stub TileWindows
429 stub CascadeWindows
430 pascal16 lstrcmp(str str) lstrcmp16
...
...
include/server.h
View file @
b849d791
...
...
@@ -1044,6 +1044,37 @@ struct get_selector_entry_request
};
/* Add a global atom */
struct
add_atom_request
{
OUT
int
atom
;
/* resulting atom */
IN
WCHAR
name
[
1
];
/* atom name */
};
/* Delete a global atom */
struct
delete_atom_request
{
IN
int
atom
;
/* atom handle */
};
/* Find a global atom */
struct
find_atom_request
{
OUT
int
atom
;
/* atom handle */
IN
WCHAR
name
[
1
];
/* atom name */
};
/* Get a global atom name */
struct
get_atom_name_request
{
IN
int
atom
;
/* atom handle */
OUT
int
count
;
/* atom lock count */
OUT
WCHAR
name
[
1
];
/* atom name */
};
/* Everything below this line is generated automatically by tools/make_requests */
/* ### make_requests begin ### */
...
...
@@ -1142,6 +1173,10 @@ enum request
REQ_GET_THREAD_CONTEXT
,
REQ_SET_THREAD_CONTEXT
,
REQ_GET_SELECTOR_ENTRY
,
REQ_ADD_ATOM
,
REQ_DELETE_ATOM
,
REQ_FIND_ATOM
,
REQ_GET_ATOM_NAME
,
REQ_NB_REQUESTS
};
...
...
include/wine/winbase16.h
View file @
b849d791
...
...
@@ -107,14 +107,14 @@ VOID WINAPI hmemcpy16(LPVOID,LPCVOID,LONG);
#endif
/* __WINE__ */
INT16
WINAPI
AccessResource16
(
HINSTANCE16
,
HRSRC16
);
ATOM
WINAPI
AddAtom16
(
SEGP
TR
);
ATOM
WINAPI
AddAtom16
(
LPCS
TR
);
BOOL16
WINAPI
CreateDirectory16
(
LPCSTR
,
LPVOID
);
BOOL16
WINAPI
DefineHandleTable16
(
WORD
);
ATOM
WINAPI
DeleteAtom16
(
ATOM
);
BOOL16
WINAPI
DeleteFile16
(
LPCSTR
);
void
WINAPI
ExitKernel16
(
void
);
void
WINAPI
FatalAppExit16
(
UINT16
,
LPCSTR
);
ATOM
WINAPI
FindAtom16
(
SEGP
TR
);
ATOM
WINAPI
FindAtom16
(
LPCS
TR
);
BOOL16
WINAPI
FindClose16
(
HANDLE16
);
HRSRC16
WINAPI
FindResource16
(
HINSTANCE16
,
SEGPTR
,
SEGPTR
);
BOOL16
WINAPI
FreeModule16
(
HMODULE16
);
...
...
include/wine/winuser16.h
View file @
b849d791
...
...
@@ -709,8 +709,8 @@ LONG WINAPI EscapeCommFunction16(UINT16,UINT16);
INT16
WINAPI
ExcludeUpdateRgn16
(
HDC16
,
HWND16
);
BOOL16
WINAPI
ExitWindows16
(
DWORD
,
UINT16
);
INT16
WINAPI
FillRect16
(
HDC16
,
const
RECT16
*
,
HBRUSH16
);
HWND16
WINAPI
FindWindow16
(
SEGP
TR
,
LPCSTR
);
HWND16
WINAPI
FindWindowEx16
(
HWND16
,
HWND16
,
SEGP
TR
,
LPCSTR
);
HWND16
WINAPI
FindWindow16
(
LPCS
TR
,
LPCSTR
);
HWND16
WINAPI
FindWindowEx16
(
HWND16
,
HWND16
,
LPCS
TR
,
LPCSTR
);
BOOL16
WINAPI
FlashWindow16
(
HWND16
,
BOOL16
);
DWORD
WINAPI
FormatMessage16
(
DWORD
,
SEGPTR
,
WORD
,
WORD
,
LPSTR
,
WORD
,
LPDWORD
);
INT16
WINAPI
FrameRect16
(
HDC16
,
const
RECT16
*
,
HBRUSH16
);
...
...
@@ -719,8 +719,8 @@ WORD WINAPI GetAsyncKeyState16(INT16);
HWND16
WINAPI
GetCapture16
(
void
);
UINT16
WINAPI
GetCaretBlinkTime16
(
void
);
VOID
WINAPI
GetCaretPos16
(
LPPOINT16
);
BOOL16
WINAPI
GetClassInfo16
(
HINSTANCE16
,
SEGP
TR
,
WNDCLASS16
*
);
BOOL16
WINAPI
GetClassInfoEx16
(
HINSTANCE16
,
SEGP
TR
,
WNDCLASSEX16
*
);
BOOL16
WINAPI
GetClassInfo16
(
HINSTANCE16
,
LPCS
TR
,
WNDCLASS16
*
);
BOOL16
WINAPI
GetClassInfoEx16
(
HINSTANCE16
,
LPCS
TR
,
WNDCLASSEX16
*
);
LONG
WINAPI
GetClassLong16
(
HWND16
,
INT16
);
INT16
WINAPI
GetClassName16
(
HWND16
,
LPSTR
,
INT16
);
WORD
WINAPI
GetClassWord16
(
HWND16
,
INT16
);
...
...
@@ -789,9 +789,6 @@ HTASK16 WINAPI GetWindowTask16(HWND16);
INT16
WINAPI
GetWindowText16
(
HWND16
,
SEGPTR
,
INT16
);
INT16
WINAPI
GetWindowTextLength16
(
HWND16
);
WORD
WINAPI
GetWindowWord16
(
HWND16
,
INT16
);
ATOM
WINAPI
GlobalAddAtom16
(
SEGPTR
);
ATOM
WINAPI
GlobalFindAtom16
(
SEGPTR
);
UINT16
WINAPI
GlobalGetAtomName16
(
ATOM
,
LPSTR
,
INT16
);
VOID
WINAPI
HideCaret16
(
HWND16
);
BOOL16
WINAPI
HiliteMenuItem16
(
HWND16
,
HMENU16
,
UINT16
,
UINT16
);
void
WINAPI
InflateRect16
(
LPRECT16
,
INT16
,
INT16
);
...
...
@@ -846,7 +843,6 @@ BOOL16 WINAPI RedrawWindow16(HWND16,const RECT16*,HRGN16,UINT16);
ATOM
WINAPI
RegisterClass16
(
const
WNDCLASS16
*
);
ATOM
WINAPI
RegisterClassEx16
(
const
WNDCLASSEX16
*
);
UINT16
WINAPI
RegisterClipboardFormat16
(
LPCSTR
);
WORD
WINAPI
RegisterWindowMessage16
(
SEGPTR
);
INT16
WINAPI
ReleaseDC16
(
HWND16
,
HDC16
);
BOOL16
WINAPI
RemoveMenu16
(
HMENU16
,
UINT16
,
UINT16
);
HANDLE16
WINAPI
RemoveProp16
(
HWND16
,
LPCSTR
);
...
...
@@ -917,7 +913,7 @@ BOOL16 WINAPI TranslateMessage16(const MSG16*);
BOOL16
WINAPI
TranslateMessage32_16
(
const
MSG32_16
*
,
BOOL16
);
INT16
WINAPI
TransmitCommChar16
(
INT16
,
CHAR
);
BOOL16
WINAPI
UnionRect16
(
LPRECT16
,
const
RECT16
*
,
const
RECT16
*
);
BOOL16
WINAPI
UnregisterClass16
(
SEGP
TR
,
HINSTANCE16
);
BOOL16
WINAPI
UnregisterClass16
(
LPCS
TR
,
HINSTANCE16
);
VOID
WINAPI
UpdateWindow16
(
HWND16
);
VOID
WINAPI
ValidateRect16
(
HWND16
,
const
RECT16
*
);
VOID
WINAPI
ValidateRgn16
(
HWND16
,
HRGN16
);
...
...
memory/atom.c
View file @
b849d791
This diff is collapsed.
Click to expand it.
server/Makefile.in
View file @
b849d791
...
...
@@ -6,6 +6,7 @@ VPATH = @srcdir@
MODULE
=
none
C_SRCS
=
\
atom.c
\
change.c
\
console.c
\
context_i386.c
\
...
...
server/atom.c
0 → 100644
View file @
b849d791
/*
* Server-side atom management
*
* Copyright (C) 1999, 2000 Alexandre Julliard
* Copyright (C) 2000 Turchanov Sergei
*/
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include "unicode.h"
#include "request.h"
#include "object.h"
#define HASH_SIZE 37
#define MAX_ATOM_LEN 255
#define MAX_ATOMS 0x4000
struct
atom_entry
{
struct
atom_entry
*
next
;
/* hash table list */
struct
atom_entry
*
prev
;
/* hash table list */
int
atom
;
/* atom handle */
int
count
;
/* reference count */
int
hash
;
/* string hash */
WCHAR
str
[
1
];
/* atom string */
};
struct
atom_table
{
struct
object
obj
;
/* object header */
int
count
;
/* count of atom handles */
int
last
;
/* last handle in-use */
struct
atom_entry
**
handles
;
/* atom handles */
struct
atom_entry
*
entries
[
HASH_SIZE
];
/* hash table entries */
};
static
void
atom_table_dump
(
struct
object
*
obj
,
int
verbose
);
static
void
atom_table_destroy
(
struct
object
*
obj
);
static
const
struct
object_ops
atom_table_ops
=
{
sizeof
(
struct
atom_table
),
/* size */
atom_table_dump
,
/* dump */
no_add_queue
,
/* add_queue */
NULL
,
/* remove_queue */
NULL
,
/* signaled */
NULL
,
/* satified */
NULL
,
/* get_poll_events */
NULL
,
/* poll_event */
no_read_fd
,
/* get_read_fd */
no_write_fd
,
/* get_write_fd */
no_flush
,
/* flush */
no_get_file_info
,
/* get_file_info */
atom_table_destroy
/* destroy */
};
static
struct
atom_table
*
global_table
;
/* copy an atom name to a temporary area */
static
const
WCHAR
*
copy_name
(
const
WCHAR
*
str
)
{
static
WCHAR
buffer
[
MAX_ATOM_LEN
+
1
];
WCHAR
*
p
=
buffer
;
while
(
p
<
buffer
+
sizeof
(
buffer
)
-
1
)
if
(
!
(
*
p
++
=
*
str
++
))
break
;
*
p
=
0
;
return
buffer
;
}
/* create an atom table */
static
struct
atom_table
*
create_table
(
void
)
{
struct
atom_table
*
table
;
if
((
table
=
alloc_object
(
&
atom_table_ops
,
-
1
)))
{
table
->
count
=
64
;
table
->
last
=
-
1
;
memset
(
table
->
entries
,
0
,
sizeof
(
table
->
entries
)
);
if
((
table
->
handles
=
mem_alloc
(
sizeof
(
*
table
->
handles
)
*
table
->
count
)))
return
table
;
release_object
(
table
);
table
=
NULL
;
}
return
table
;
}
/* retrieve an entry pointer from its atom */
static
struct
atom_entry
*
get_atom_entry
(
struct
atom_table
*
table
,
int
atom
)
{
struct
atom_entry
*
entry
=
NULL
;
if
(
table
&&
(
atom
>=
0
)
&&
(
atom
<=
table
->
last
))
entry
=
table
->
handles
[
atom
];
if
(
!
entry
)
set_error
(
STATUS_INVALID_HANDLE
);
return
entry
;
}
/* add an atom entry in the table and return its handle */
static
int
add_atom_entry
(
struct
atom_table
*
table
,
struct
atom_entry
*
entry
)
{
int
i
;
for
(
i
=
0
;
i
<=
table
->
last
;
i
++
)
if
(
!
table
->
handles
[
i
])
goto
found
;
if
(
i
==
table
->
count
)
{
struct
atom_entry
**
new_table
=
NULL
;
int
new_size
=
table
->
count
+
table
->
count
/
2
;
if
(
new_size
>
MAX_ATOMS
)
new_size
=
MAX_ATOMS
;
if
(
new_size
>
table
->
count
)
new_table
=
realloc
(
table
->
handles
,
sizeof
(
*
table
->
handles
)
*
new_size
);
if
(
!
new_table
)
{
set_error
(
STATUS_NO_MEMORY
);
return
-
1
;
}
table
->
count
=
new_size
;
table
->
handles
=
new_table
;
}
table
->
last
=
i
;
found:
table
->
handles
[
i
]
=
entry
;
entry
->
atom
=
i
;
return
i
;
}
/* compute the hash code for a string */
static
int
atom_hash
(
const
WCHAR
*
str
)
{
int
i
;
WCHAR
hash
=
0
;
for
(
i
=
0
;
str
[
i
];
i
++
)
hash
^=
towupper
(
str
[
i
])
+
i
;
return
hash
%
HASH_SIZE
;
}
/* dump an atom table */
static
void
atom_table_dump
(
struct
object
*
obj
,
int
verbose
)
{
int
i
;
struct
atom_table
*
table
=
(
struct
atom_table
*
)
obj
;
assert
(
obj
->
ops
==
&
atom_table_ops
);
fprintf
(
stderr
,
"Atom table size=%d
\n
"
,
table
->
last
+
1
);
if
(
!
verbose
)
return
;
for
(
i
=
0
;
i
<=
table
->
last
;
i
++
)
{
struct
atom_entry
*
entry
=
table
->
handles
[
i
];
if
(
!
entry
)
continue
;
fprintf
(
stderr
,
" %5d: ref=%d hash=%d
\"
"
,
i
,
entry
->
count
,
entry
->
hash
);
dump_strW
(
entry
->
str
,
strlenW
(
entry
->
str
),
stderr
,
"
\"\"
"
);
fprintf
(
stderr
,
"
\"\n
"
);
}
}
/* destroy the atom table */
static
void
atom_table_destroy
(
struct
object
*
obj
)
{
int
i
;
struct
atom_table
*
table
=
(
struct
atom_table
*
)
obj
;
assert
(
obj
->
ops
==
&
atom_table_ops
);
for
(
i
=
0
;
i
<=
table
->
last
;
i
++
)
free
(
table
->
handles
[
i
]
);
free
(
table
->
handles
);
}
/* find an atom entry in its hash list */
static
struct
atom_entry
*
find_atom_entry
(
struct
atom_table
*
table
,
const
WCHAR
*
str
,
int
hash
)
{
struct
atom_entry
*
entry
=
table
->
entries
[
hash
];
while
(
entry
)
{
if
(
!
strcmpiW
(
entry
->
str
,
str
))
break
;
entry
=
entry
->
next
;
}
return
entry
;
}
/* close the atom table; used on server exit */
void
close_atom_table
(
void
)
{
if
(
global_table
)
release_object
(
global_table
);
}
/* add an atom to the table */
static
int
add_atom
(
struct
atom_table
*
table
,
const
WCHAR
*
str
)
{
struct
atom_entry
*
entry
;
int
hash
=
atom_hash
(
str
);
int
atom
=
-
1
;
if
(
!*
str
)
{
set_error
(
STATUS_OBJECT_NAME_INVALID
);
return
-
1
;
}
if
((
entry
=
find_atom_entry
(
table
,
str
,
hash
)))
/* exists already */
{
entry
->
count
++
;
return
entry
->
atom
;
}
if
((
entry
=
mem_alloc
(
sizeof
(
*
entry
)
+
strlenW
(
str
)
*
sizeof
(
WCHAR
)
)))
{
if
((
atom
=
add_atom_entry
(
table
,
entry
))
!=
-
1
)
{
entry
->
prev
=
NULL
;
if
((
entry
->
next
=
table
->
entries
[
hash
]))
entry
->
next
->
prev
=
entry
;
table
->
entries
[
hash
]
=
entry
;
entry
->
count
=
1
;
entry
->
hash
=
hash
;
strcpyW
(
entry
->
str
,
str
);
}
else
free
(
entry
);
}
else
set_error
(
STATUS_NO_MEMORY
);
return
atom
;
}
/* delete an atom from the table */
static
void
delete_atom
(
struct
atom_table
*
table
,
int
atom
)
{
struct
atom_entry
*
entry
=
get_atom_entry
(
table
,
atom
);
if
(
entry
&&
!--
entry
->
count
)
{
if
(
entry
->
next
)
entry
->
next
->
prev
=
entry
->
prev
;
if
(
entry
->
prev
)
entry
->
prev
->
next
=
entry
->
next
;
else
table
->
entries
[
entry
->
hash
]
=
entry
->
next
;
table
->
handles
[
atom
]
=
NULL
;
free
(
entry
);
}
}
/* find an atom in the table */
static
int
find_atom
(
struct
atom_table
*
table
,
const
WCHAR
*
str
)
{
struct
atom_entry
*
entry
;
if
(
table
&&
((
entry
=
find_atom_entry
(
table
,
str
,
atom_hash
(
str
)
))))
return
entry
->
atom
;
if
(
!*
str
)
set_error
(
STATUS_OBJECT_NAME_INVALID
);
else
set_error
(
STATUS_OBJECT_NAME_NOT_FOUND
);
return
-
1
;
}
/* get an atom name and refcount*/
static
int
get_atom_name
(
struct
atom_table
*
table
,
int
atom
,
WCHAR
*
str
)
{
int
count
=
-
1
;
struct
atom_entry
*
entry
=
get_atom_entry
(
table
,
atom
);
if
(
entry
)
{
strcpyW
(
str
,
entry
->
str
);
count
=
entry
->
count
;
}
return
count
;
}
/* add a global atom */
DECL_HANDLER
(
add_atom
)
{
if
(
!
global_table
)
global_table
=
create_table
();
if
(
global_table
)
req
->
atom
=
add_atom
(
global_table
,
copy_name
(
req
->
name
)
);
}
/* delete a global atom */
DECL_HANDLER
(
delete_atom
)
{
delete_atom
(
global_table
,
req
->
atom
);
}
/* find a global atom */
DECL_HANDLER
(
find_atom
)
{
req
->
atom
=
find_atom
(
global_table
,
copy_name
(
req
->
name
)
);
}
/* get global atom name */
DECL_HANDLER
(
get_atom_name
)
{
req
->
count
=
get_atom_name
(
global_table
,
req
->
atom
,
req
->
name
);
}
server/main.c
View file @
b849d791
...
...
@@ -95,6 +95,7 @@ int main( int argc, char *argv[] )
#ifdef DEBUG_OBJECTS
close_registry
();
close_atom_table
();
dump_objects
();
/* dump any remaining objects */
#endif
exit
(
0
);
...
...
server/object.h
View file @
b849d791
...
...
@@ -165,6 +165,10 @@ extern int get_page_size(void);
extern
void
close_registry
(
void
);
/* atom functions */
extern
void
close_atom_table
(
void
);
/* global variables (command-line options) */
extern
int
debug_level
;
...
...
server/request.h
View file @
b849d791
...
...
@@ -163,6 +163,10 @@ DECL_HANDLER(cancel_timer);
DECL_HANDLER
(
get_thread_context
);
DECL_HANDLER
(
set_thread_context
);
DECL_HANDLER
(
get_selector_entry
);
DECL_HANDLER
(
add_atom
);
DECL_HANDLER
(
delete_atom
);
DECL_HANDLER
(
find_atom
);
DECL_HANDLER
(
get_atom_name
);
#ifdef WANT_REQUEST_HANDLERS
...
...
@@ -263,6 +267,10 @@ static const struct handler {
{
(
void
(
*
)())
req_get_thread_context
,
sizeof
(
struct
get_thread_context_request
)
},
{
(
void
(
*
)())
req_set_thread_context
,
sizeof
(
struct
set_thread_context_request
)
},
{
(
void
(
*
)())
req_get_selector_entry
,
sizeof
(
struct
get_selector_entry_request
)
},
{
(
void
(
*
)())
req_add_atom
,
sizeof
(
struct
add_atom_request
)
},
{
(
void
(
*
)())
req_delete_atom
,
sizeof
(
struct
delete_atom_request
)
},
{
(
void
(
*
)())
req_find_atom
,
sizeof
(
struct
find_atom_request
)
},
{
(
void
(
*
)())
req_get_atom_name
,
sizeof
(
struct
get_atom_name_request
)
},
};
#endif
/* WANT_REQUEST_HANDLERS */
...
...
server/trace.c
View file @
b849d791
...
...
@@ -1182,6 +1182,45 @@ static void dump_get_selector_entry_reply( const struct get_selector_entry_reque
fprintf
(
stderr
,
" flags=%02x"
,
req
->
flags
);
}
static
void
dump_add_atom_request
(
const
struct
add_atom_request
*
req
)
{
fprintf
(
stderr
,
" name="
);
dump_unicode_string
(
req
->
name
);
}
static
void
dump_add_atom_reply
(
const
struct
add_atom_request
*
req
)
{
fprintf
(
stderr
,
" atom=%d"
,
req
->
atom
);
}
static
void
dump_delete_atom_request
(
const
struct
delete_atom_request
*
req
)
{
fprintf
(
stderr
,
" atom=%d"
,
req
->
atom
);
}
static
void
dump_find_atom_request
(
const
struct
find_atom_request
*
req
)
{
fprintf
(
stderr
,
" name="
);
dump_unicode_string
(
req
->
name
);
}
static
void
dump_find_atom_reply
(
const
struct
find_atom_request
*
req
)
{
fprintf
(
stderr
,
" atom=%d"
,
req
->
atom
);
}
static
void
dump_get_atom_name_request
(
const
struct
get_atom_name_request
*
req
)
{
fprintf
(
stderr
,
" atom=%d"
,
req
->
atom
);
}
static
void
dump_get_atom_name_reply
(
const
struct
get_atom_name_request
*
req
)
{
fprintf
(
stderr
,
" count=%d,"
,
req
->
count
);
fprintf
(
stderr
,
" name="
);
dump_unicode_string
(
req
->
name
);
}
static
const
dump_func
req_dumpers
[
REQ_NB_REQUESTS
]
=
{
(
dump_func
)
dump_new_process_request
,
(
dump_func
)
dump_new_thread_request
,
...
...
@@ -1276,6 +1315,10 @@ static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
(
dump_func
)
dump_get_thread_context_request
,
(
dump_func
)
dump_set_thread_context_request
,
(
dump_func
)
dump_get_selector_entry_request
,
(
dump_func
)
dump_add_atom_request
,
(
dump_func
)
dump_delete_atom_request
,
(
dump_func
)
dump_find_atom_request
,
(
dump_func
)
dump_get_atom_name_request
,
};
static
const
dump_func
reply_dumpers
[
REQ_NB_REQUESTS
]
=
{
...
...
@@ -1372,6 +1415,10 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
(
dump_func
)
dump_get_thread_context_reply
,
(
dump_func
)
0
,
(
dump_func
)
dump_get_selector_entry_reply
,
(
dump_func
)
dump_add_atom_reply
,
(
dump_func
)
0
,
(
dump_func
)
dump_find_atom_reply
,
(
dump_func
)
dump_get_atom_name_reply
,
};
static
const
char
*
const
req_names
[
REQ_NB_REQUESTS
]
=
{
...
...
@@ -1468,6 +1515,10 @@ static const char * const req_names[REQ_NB_REQUESTS] = {
"get_thread_context"
,
"set_thread_context"
,
"get_selector_entry"
,
"add_atom"
,
"delete_atom"
,
"find_atom"
,
"get_atom_name"
,
};
/* ### make_requests end ### */
...
...
server/unicode.h
View file @
b849d791
...
...
@@ -45,10 +45,10 @@ static inline int strcmpiW( const WCHAR *str1, const WCHAR *str2 )
return
towupper
(
*
str1
)
-
towupper
(
*
str2
);
}
static
inline
WCHAR
*
strcpyW
(
WCHAR
*
src
,
const
WCHAR
*
dst
)
static
inline
WCHAR
*
strcpyW
(
WCHAR
*
dst
,
const
WCHAR
*
src
)
{
const
WCHAR
*
ret
=
dst
;
while
((
*
src
++
=
*
dst
++
));
while
((
*
dst
++
=
*
src
++
));
return
(
WCHAR
*
)
ret
;
}
...
...
windows/class.c
View file @
b849d791
...
...
@@ -417,7 +417,7 @@ ATOM WINAPI RegisterClass16( const WNDCLASS16 *wc )
int
iSmIconWidth
,
iSmIconHeight
;
HINSTANCE16
hInstance
=
GetExePtr
(
wc
->
hInstance
);
if
(
!
(
atom
=
GlobalAddAtom
16
(
wc
->
lpszClassName
)))
return
0
;
if
(
!
(
atom
=
GlobalAddAtom
A
(
PTR_SEG_TO_LIN
(
wc
->
lpszClassName
)
)))
return
0
;
if
(
!
(
classPtr
=
CLASS_RegisterClass
(
atom
,
hInstance
,
wc
->
style
,
wc
->
cbClsExtra
,
wc
->
cbWndExtra
,
wc
->
lpfnWndProc
,
WIN_PROC_16
)))
...
...
@@ -556,7 +556,7 @@ ATOM WINAPI RegisterClassEx16( const WNDCLASSEX16 *wc )
CLASS
*
classPtr
;
HINSTANCE16
hInstance
=
GetExePtr
(
wc
->
hInstance
);
if
(
!
(
atom
=
GlobalAddAtom
16
(
wc
->
lpszClassName
)))
return
0
;
if
(
!
(
atom
=
GlobalAddAtom
A
(
PTR_SEG_TO_LIN
(
wc
->
lpszClassName
)
)))
return
0
;
if
(
!
(
classPtr
=
CLASS_RegisterClass
(
atom
,
hInstance
,
wc
->
style
,
wc
->
cbClsExtra
,
wc
->
cbWndExtra
,
wc
->
lpfnWndProc
,
WIN_PROC_16
)))
...
...
@@ -662,16 +662,9 @@ ATOM WINAPI RegisterClassExW( const WNDCLASSEXW* wc )
/***********************************************************************
* UnregisterClass16 (USER.403)
*/
BOOL16
WINAPI
UnregisterClass16
(
SEGP
TR
className
,
HINSTANCE16
hInstance
)
BOOL16
WINAPI
UnregisterClass16
(
LPCS
TR
className
,
HINSTANCE16
hInstance
)
{
CLASS
*
classPtr
;
ATOM
atom
;
hInstance
=
GetExePtr
(
hInstance
);
if
(
!
(
atom
=
GlobalFindAtom16
(
className
)))
return
FALSE
;
if
(
!
(
classPtr
=
CLASS_FindClassByAtom
(
atom
,
hInstance
))
||
(
classPtr
->
hInstance
!=
hInstance
))
return
FALSE
;
return
CLASS_FreeClass
(
classPtr
);
return
UnregisterClassA
(
className
,
GetExePtr
(
hInstance
)
);
}
...
...
@@ -1076,12 +1069,7 @@ LONG WINAPI SetClassLongW( HWND hwnd, INT offset, LONG newval )
*/
INT16
WINAPI
GetClassName16
(
HWND16
hwnd
,
LPSTR
buffer
,
INT16
count
)
{
WND
*
wndPtr
;
INT16
retvalue
;
if
(
!
(
wndPtr
=
WIN_FindWndPtr
(
hwnd
)))
return
0
;
retvalue
=
GlobalGetAtomName16
(
wndPtr
->
class
->
atomName
,
buffer
,
count
);
WIN_ReleaseWndPtr
(
wndPtr
);
return
retvalue
;
return
GetClassNameA
(
hwnd
,
buffer
,
count
);
}
...
...
@@ -1120,16 +1108,15 @@ INT WINAPI GetClassNameW( HWND hwnd, LPWSTR buffer, INT count )
/***********************************************************************
* GetClassInfo16 (USER.404)
*/
BOOL16
WINAPI
GetClassInfo16
(
HINSTANCE16
hInstance
,
SEGPTR
name
,
WNDCLASS16
*
wc
)
BOOL16
WINAPI
GetClassInfo16
(
HINSTANCE16
hInstance
,
LPCSTR
name
,
WNDCLASS16
*
wc
)
{
ATOM
atom
;
CLASS
*
classPtr
;
TRACE
(
"%x %
p %p
\n
"
,
hInstance
,
PTR_SEG_TO_LIN
(
name
),
wc
);
TRACE
(
"%x %
s %p
\n
"
,
hInstance
,
debugres_a
(
name
),
wc
);
hInstance
=
GetExePtr
(
hInstance
);
if
(
!
(
atom
=
GlobalFindAtom
16
(
name
))
||
if
(
!
(
atom
=
GlobalFindAtom
A
(
name
))
||
!
(
classPtr
=
CLASS_FindClassByAtom
(
atom
,
hInstance
)))
return
FALSE
;
if
((
hInstance
!=
classPtr
->
hInstance
)
&&
...
...
@@ -1237,16 +1224,15 @@ BOOL WINAPI GetClassInfoW( HINSTANCE hInstance, LPCWSTR name,
* FIXME: this is just a guess, I have no idea if GetClassInfoEx() is the
* same in Win16 as in Win32. --AJ
*/
BOOL16
WINAPI
GetClassInfoEx16
(
HINSTANCE16
hInstance
,
SEGPTR
name
,
WNDCLASSEX16
*
wc
)
BOOL16
WINAPI
GetClassInfoEx16
(
HINSTANCE16
hInstance
,
LPCSTR
name
,
WNDCLASSEX16
*
wc
)
{
ATOM
atom
;
CLASS
*
classPtr
;
TRACE
(
"%x %
p %p
\n
"
,
hInstance
,
PTR_SEG_TO_LIN
(
name
),
wc
);
TRACE
(
"%x %
s %p
\n
"
,
hInstance
,
debugres_a
(
name
),
wc
);
hInstance
=
GetExePtr
(
hInstance
);
if
(
!
(
atom
=
GlobalFindAtom
16
(
name
))
||
if
(
!
(
atom
=
GlobalFindAtom
A
(
name
))
||
!
(
classPtr
=
CLASS_FindClassByAtom
(
atom
,
hInstance
))
||
(
hInstance
!=
classPtr
->
hInstance
))
return
FALSE
;
wc
->
style
=
classPtr
->
style
;
...
...
windows/message.c
View file @
b849d791
...
...
@@ -2452,17 +2452,7 @@ END:
/***********************************************************************
* RegisterWindowMessage16 (USER.118)
*/
WORD
WINAPI
RegisterWindowMessage16
(
SEGPTR
str
)
{
TRACE
(
"%08lx
\n
"
,
(
DWORD
)
str
);
return
GlobalAddAtom16
(
str
);
}
/***********************************************************************
* RegisterWindowMessage32A (USER32.437)
* RegisterWindowMessageA (USER.118) (USER32.437)
*/
WORD
WINAPI
RegisterWindowMessageA
(
LPCSTR
str
)
{
...
...
windows/win.c
View file @
b849d791
...
...
@@ -284,7 +284,7 @@ void WIN_WalkWindows( HWND hwnd, int indent )
{
DPRINTF
(
"%*s%04x%*s"
,
indent
,
""
,
ptr
->
hwndSelf
,
13
-
indent
,
""
);
GlobalGetAtomName
16
(
ptr
->
class
->
atomName
,
className
,
sizeof
(
className
));
GlobalGetAtomName
A
(
ptr
->
class
->
atomName
,
className
,
sizeof
(
className
));
DPRINTF
(
"%08lx %-6.4x %-17.17s %08x %08x %.14s
\n
"
,
(
DWORD
)
ptr
,
ptr
->
hmemTaskQ
,
className
,
...
...
@@ -1560,31 +1560,18 @@ end:
/***********************************************************************
* FindWindow16 (USER.50)
*/
HWND16
WINAPI
FindWindow16
(
SEGP
TR
className
,
LPCSTR
title
)
HWND16
WINAPI
FindWindow16
(
LPCS
TR
className
,
LPCSTR
title
)
{
return
FindWindow
Ex16
(
0
,
0
,
className
,
title
);
return
FindWindow
A
(
className
,
title
);
}
/***********************************************************************
* FindWindowEx16 (USER.427)
*/
HWND16
WINAPI
FindWindowEx16
(
HWND16
parent
,
HWND16
child
,
SEGPTR
className
,
LPCSTR
title
)
HWND16
WINAPI
FindWindowEx16
(
HWND16
parent
,
HWND16
child
,
LPCSTR
className
,
LPCSTR
title
)
{
ATOM
atom
=
0
;
TRACE
(
"%04x %04x '%s' '%s'
\n
"
,
parent
,
child
,
HIWORD
(
className
)
?
(
char
*
)
PTR_SEG_TO_LIN
(
className
)
:
""
,
title
?
title
:
""
);
if
(
className
)
{
/* If the atom doesn't exist, then no class */
/* with this name exists either. */
if
(
!
(
atom
=
GlobalFindAtom16
(
className
)))
return
0
;
}
return
WIN_FindWindow
(
parent
,
child
,
atom
,
title
);
return
FindWindowExA
(
parent
,
child
,
className
,
title
);
}
...
...
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