Commit 517b2f62 authored by Alexandre Julliard's avatar Alexandre Julliard

server: Windows properties are actually generic params, not handles.

parent 31282b3f
...@@ -130,17 +130,17 @@ HANDLE WINAPI GetPropA( HWND hwnd, LPCSTR str ) ...@@ -130,17 +130,17 @@ HANDLE WINAPI GetPropA( HWND hwnd, LPCSTR str )
*/ */
HANDLE WINAPI GetPropW( HWND hwnd, LPCWSTR str ) HANDLE WINAPI GetPropW( HWND hwnd, LPCWSTR str )
{ {
HANDLE ret = 0; ULONG_PTR ret = 0;
SERVER_START_REQ( get_window_property ) SERVER_START_REQ( get_window_property )
{ {
req->window = wine_server_user_handle( hwnd ); req->window = wine_server_user_handle( hwnd );
if (!HIWORD(str)) req->atom = LOWORD(str); if (!HIWORD(str)) req->atom = LOWORD(str);
else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) ); else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) );
if (!wine_server_call_err( req )) ret = wine_server_ptr_handle( reply->handle ); if (!wine_server_call_err( req )) ret = reply->data;
} }
SERVER_END_REQ; SERVER_END_REQ;
return ret; return (HANDLE)ret;
} }
...@@ -167,7 +167,7 @@ BOOL WINAPI SetPropW( HWND hwnd, LPCWSTR str, HANDLE handle ) ...@@ -167,7 +167,7 @@ BOOL WINAPI SetPropW( HWND hwnd, LPCWSTR str, HANDLE handle )
SERVER_START_REQ( set_window_property ) SERVER_START_REQ( set_window_property )
{ {
req->window = wine_server_user_handle( hwnd ); req->window = wine_server_user_handle( hwnd );
req->handle = wine_server_obj_handle( handle ); req->data = (ULONG_PTR)handle;
if (!HIWORD(str)) req->atom = LOWORD(str); if (!HIWORD(str)) req->atom = LOWORD(str);
else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) ); else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) );
ret = !wine_server_call_err( req ); ret = !wine_server_call_err( req );
...@@ -195,18 +195,18 @@ HANDLE WINAPI RemovePropA( HWND hwnd, LPCSTR str ) ...@@ -195,18 +195,18 @@ HANDLE WINAPI RemovePropA( HWND hwnd, LPCSTR str )
*/ */
HANDLE WINAPI RemovePropW( HWND hwnd, LPCWSTR str ) HANDLE WINAPI RemovePropW( HWND hwnd, LPCWSTR str )
{ {
HANDLE ret = 0; ULONG_PTR ret = 0;
SERVER_START_REQ( remove_window_property ) SERVER_START_REQ( remove_window_property )
{ {
req->window = wine_server_user_handle( hwnd ); req->window = wine_server_user_handle( hwnd );
if (!HIWORD(str)) req->atom = LOWORD(str); if (!HIWORD(str)) req->atom = LOWORD(str);
else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) ); else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) );
if (!wine_server_call_err( req )) ret = wine_server_ptr_handle( reply->handle ); if (!wine_server_call_err( req )) ret = reply->data;
} }
SERVER_END_REQ; SERVER_END_REQ;
return ret; return (HANDLE)ret;
} }
...@@ -224,7 +224,7 @@ INT WINAPI EnumPropsExA(HWND hwnd, PROPENUMPROCEXA func, LPARAM lParam) ...@@ -224,7 +224,7 @@ INT WINAPI EnumPropsExA(HWND hwnd, PROPENUMPROCEXA func, LPARAM lParam)
{ {
char string[ATOM_BUFFER_SIZE]; char string[ATOM_BUFFER_SIZE];
if (!GlobalGetAtomNameA( list[i].atom, string, ATOM_BUFFER_SIZE )) continue; if (!GlobalGetAtomNameA( list[i].atom, string, ATOM_BUFFER_SIZE )) continue;
if (!(ret = func( hwnd, string, wine_server_ptr_handle(list[i].handle), lParam ))) break; if (!(ret = func( hwnd, string, (HANDLE)(ULONG_PTR)list[i].data, lParam ))) break;
} }
HeapFree( GetProcessHeap(), 0, list ); HeapFree( GetProcessHeap(), 0, list );
} }
...@@ -246,7 +246,7 @@ INT WINAPI EnumPropsExW(HWND hwnd, PROPENUMPROCEXW func, LPARAM lParam) ...@@ -246,7 +246,7 @@ INT WINAPI EnumPropsExW(HWND hwnd, PROPENUMPROCEXW func, LPARAM lParam)
{ {
WCHAR string[ATOM_BUFFER_SIZE]; WCHAR string[ATOM_BUFFER_SIZE];
if (!GlobalGetAtomNameW( list[i].atom, string, ATOM_BUFFER_SIZE )) continue; if (!GlobalGetAtomNameW( list[i].atom, string, ATOM_BUFFER_SIZE )) continue;
if (!(ret = func( hwnd, string, wine_server_ptr_handle(list[i].handle), lParam ))) break; if (!(ret = func( hwnd, string, (HANDLE)(ULONG_PTR)list[i].data, lParam ))) break;
} }
HeapFree( GetProcessHeap(), 0, list ); HeapFree( GetProcessHeap(), 0, list );
} }
...@@ -277,14 +277,14 @@ INT16 WINAPI EnumProps16( HWND16 hwnd, PROPENUMPROC16 func ) ...@@ -277,14 +277,14 @@ INT16 WINAPI EnumProps16( HWND16 hwnd, PROPENUMPROC16 func )
args[3] = hwnd; args[3] = hwnd;
args[2] = SELECTOROF(segptr); args[2] = SELECTOROF(segptr);
args[1] = OFFSETOF(segptr); args[1] = OFFSETOF(segptr);
args[0] = LOWORD(wine_server_ptr_handle(list[i].handle)); args[0] = LOWORD(list[i].data);
} }
else else
{ {
args[3] = hwnd; args[3] = hwnd;
args[2] = 0; args[2] = 0;
args[1] = list[i].atom; args[1] = list[i].atom;
args[0] = LOWORD(wine_server_ptr_handle(list[i].handle)); args[0] = LOWORD(list[i].data);
} }
WOWCallback16Ex( (DWORD)func, WCB16_PASCAL, sizeof(args), args, &result ); WOWCallback16Ex( (DWORD)func, WCB16_PASCAL, sizeof(args), args, &result );
if (!(ret = LOWORD(result))) break; if (!(ret = LOWORD(result))) break;
......
...@@ -144,7 +144,7 @@ typedef struct ...@@ -144,7 +144,7 @@ typedef struct
{ {
atom_t atom; atom_t atom;
short string; short string;
obj_handle_t handle; lparam_t data;
} property_data_t; } property_data_t;
...@@ -3144,7 +3144,7 @@ struct set_window_property_request ...@@ -3144,7 +3144,7 @@ struct set_window_property_request
struct request_header __header; struct request_header __header;
user_handle_t window; user_handle_t window;
atom_t atom; atom_t atom;
obj_handle_t handle; lparam_t data;
/* VARARG(name,unicode_str); */ /* VARARG(name,unicode_str); */
}; };
struct set_window_property_reply struct set_window_property_reply
...@@ -3164,7 +3164,7 @@ struct remove_window_property_request ...@@ -3164,7 +3164,7 @@ struct remove_window_property_request
struct remove_window_property_reply struct remove_window_property_reply
{ {
struct reply_header __header; struct reply_header __header;
obj_handle_t handle; lparam_t data;
}; };
...@@ -3179,7 +3179,7 @@ struct get_window_property_request ...@@ -3179,7 +3179,7 @@ struct get_window_property_request
struct get_window_property_reply struct get_window_property_reply
{ {
struct reply_header __header; struct reply_header __header;
obj_handle_t handle; lparam_t data;
}; };
......
...@@ -160,7 +160,7 @@ typedef struct ...@@ -160,7 +160,7 @@ typedef struct
{ {
atom_t atom; /* property atom */ atom_t atom; /* property atom */
short string; /* was atom a string originally? */ short string; /* was atom a string originally? */
obj_handle_t handle; /* handle stored in property */ lparam_t data; /* data stored in property */
} property_data_t; } property_data_t;
/* structure to specify window rectangles */ /* structure to specify window rectangles */
...@@ -2302,7 +2302,7 @@ enum message_type ...@@ -2302,7 +2302,7 @@ enum message_type
@REQ(set_window_property) @REQ(set_window_property)
user_handle_t window; /* handle to the window */ user_handle_t window; /* handle to the window */
atom_t atom; /* property atom (if no name specified) */ atom_t atom; /* property atom (if no name specified) */
obj_handle_t handle; /* handle to store */ lparam_t data; /* data to store */
VARARG(name,unicode_str); /* property name */ VARARG(name,unicode_str); /* property name */
@END @END
...@@ -2313,7 +2313,7 @@ enum message_type ...@@ -2313,7 +2313,7 @@ enum message_type
atom_t atom; /* property atom (if no name specified) */ atom_t atom; /* property atom (if no name specified) */
VARARG(name,unicode_str); /* property name */ VARARG(name,unicode_str); /* property name */
@REPLY @REPLY
obj_handle_t handle; /* handle stored in property */ lparam_t data; /* data stored in property */
@END @END
...@@ -2323,7 +2323,7 @@ enum message_type ...@@ -2323,7 +2323,7 @@ enum message_type
atom_t atom; /* property atom (if no name specified) */ atom_t atom; /* property atom (if no name specified) */
VARARG(name,unicode_str); /* property name */ VARARG(name,unicode_str); /* property name */
@REPLY @REPLY
obj_handle_t handle; /* handle stored in property */ lparam_t data; /* data stored in property */
@END @END
......
...@@ -590,8 +590,8 @@ static void dump_varargs_properties( data_size_t size ) ...@@ -590,8 +590,8 @@ static void dump_varargs_properties( data_size_t size )
fputc( '{', stderr ); fputc( '{', stderr );
while (len > 0) while (len > 0)
{ {
fprintf( stderr, "{atom=%04x,str=%d,handle=%04x}", fprintf( stderr, "{atom=%04x,str=%d,data=%lx}",
prop->atom, prop->string, prop->handle ); prop->atom, prop->string, prop->data );
prop++; prop++;
if (--len) fputc( ',', stderr ); if (--len) fputc( ',', stderr );
} }
...@@ -2855,7 +2855,7 @@ static void dump_set_window_property_request( const struct set_window_property_r ...@@ -2855,7 +2855,7 @@ static void dump_set_window_property_request( const struct set_window_property_r
{ {
fprintf( stderr, " window=%08x,", req->window ); fprintf( stderr, " window=%08x,", req->window );
fprintf( stderr, " atom=%04x,", req->atom ); fprintf( stderr, " atom=%04x,", req->atom );
fprintf( stderr, " handle=%04x,", req->handle ); fprintf( stderr, " data=%lx,", req->data );
fprintf( stderr, " name=" ); fprintf( stderr, " name=" );
dump_varargs_unicode_str( cur_size ); dump_varargs_unicode_str( cur_size );
} }
...@@ -2870,7 +2870,7 @@ static void dump_remove_window_property_request( const struct remove_window_prop ...@@ -2870,7 +2870,7 @@ static void dump_remove_window_property_request( const struct remove_window_prop
static void dump_remove_window_property_reply( const struct remove_window_property_reply *req ) static void dump_remove_window_property_reply( const struct remove_window_property_reply *req )
{ {
fprintf( stderr, " handle=%04x", req->handle ); fprintf( stderr, " data=%lx", req->data );
} }
static void dump_get_window_property_request( const struct get_window_property_request *req ) static void dump_get_window_property_request( const struct get_window_property_request *req )
...@@ -2883,7 +2883,7 @@ static void dump_get_window_property_request( const struct get_window_property_r ...@@ -2883,7 +2883,7 @@ static void dump_get_window_property_request( const struct get_window_property_r
static void dump_get_window_property_reply( const struct get_window_property_reply *req ) static void dump_get_window_property_reply( const struct get_window_property_reply *req )
{ {
fprintf( stderr, " handle=%04x", req->handle ); fprintf( stderr, " data=%lx", req->data );
} }
static void dump_get_window_properties_request( const struct get_window_properties_request *req ) static void dump_get_window_properties_request( const struct get_window_properties_request *req )
......
...@@ -44,7 +44,7 @@ struct property ...@@ -44,7 +44,7 @@ struct property
{ {
unsigned short type; /* property type (see below) */ unsigned short type; /* property type (see below) */
atom_t atom; /* property atom */ atom_t atom; /* property atom */
obj_handle_t handle; /* property handle (user-defined storage) */ lparam_t data; /* property data (user-defined storage) */
}; };
enum property_type enum property_type
...@@ -262,7 +262,7 @@ static int add_handle_to_array( struct user_handle_array *array, user_handle_t h ...@@ -262,7 +262,7 @@ static int add_handle_to_array( struct user_handle_array *array, user_handle_t h
} }
/* set a window property */ /* set a window property */
static void set_property( struct window *win, atom_t atom, obj_handle_t handle, enum property_type type ) static void set_property( struct window *win, atom_t atom, lparam_t data, enum property_type type )
{ {
int i, free = -1; int i, free = -1;
struct property *new_props; struct property *new_props;
...@@ -278,7 +278,7 @@ static void set_property( struct window *win, atom_t atom, obj_handle_t handle, ...@@ -278,7 +278,7 @@ static void set_property( struct window *win, atom_t atom, obj_handle_t handle,
if (win->properties[i].atom == atom) if (win->properties[i].atom == atom)
{ {
win->properties[i].type = type; win->properties[i].type = type;
win->properties[i].handle = handle; win->properties[i].data = data;
return; return;
} }
} }
...@@ -303,13 +303,13 @@ static void set_property( struct window *win, atom_t atom, obj_handle_t handle, ...@@ -303,13 +303,13 @@ static void set_property( struct window *win, atom_t atom, obj_handle_t handle,
} }
free = win->prop_inuse++; free = win->prop_inuse++;
} }
win->properties[free].atom = atom; win->properties[free].atom = atom;
win->properties[free].type = type; win->properties[free].type = type;
win->properties[free].handle = handle; win->properties[free].data = data;
} }
/* remove a window property */ /* remove a window property */
static obj_handle_t remove_property( struct window *win, atom_t atom ) static lparam_t remove_property( struct window *win, atom_t atom )
{ {
int i; int i;
...@@ -320,7 +320,7 @@ static obj_handle_t remove_property( struct window *win, atom_t atom ) ...@@ -320,7 +320,7 @@ static obj_handle_t remove_property( struct window *win, atom_t atom )
{ {
release_global_atom( NULL, atom ); release_global_atom( NULL, atom );
win->properties[i].type = PROP_TYPE_FREE; win->properties[i].type = PROP_TYPE_FREE;
return win->properties[i].handle; return win->properties[i].data;
} }
} }
/* FIXME: last error? */ /* FIXME: last error? */
...@@ -328,14 +328,14 @@ static obj_handle_t remove_property( struct window *win, atom_t atom ) ...@@ -328,14 +328,14 @@ static obj_handle_t remove_property( struct window *win, atom_t atom )
} }
/* find a window property */ /* find a window property */
static obj_handle_t get_property( struct window *win, atom_t atom ) static lparam_t get_property( struct window *win, atom_t atom )
{ {
int i; int i;
for (i = 0; i < win->prop_inuse; i++) for (i = 0; i < win->prop_inuse; i++)
{ {
if (win->properties[i].type == PROP_TYPE_FREE) continue; if (win->properties[i].type == PROP_TYPE_FREE) continue;
if (win->properties[i].atom == atom) return win->properties[i].handle; if (win->properties[i].atom == atom) return win->properties[i].data;
} }
/* FIXME: last error? */ /* FIXME: last error? */
return 0; return 0;
...@@ -2358,11 +2358,11 @@ DECL_HANDLER(set_window_property) ...@@ -2358,11 +2358,11 @@ DECL_HANDLER(set_window_property)
atom_t atom = add_global_atom( NULL, &name ); atom_t atom = add_global_atom( NULL, &name );
if (atom) if (atom)
{ {
set_property( win, atom, req->handle, PROP_TYPE_STRING ); set_property( win, atom, req->data, PROP_TYPE_STRING );
release_global_atom( NULL, atom ); release_global_atom( NULL, atom );
} }
} }
else set_property( win, req->atom, req->handle, PROP_TYPE_ATOM ); else set_property( win, req->atom, req->data, PROP_TYPE_ATOM );
} }
...@@ -2376,7 +2376,7 @@ DECL_HANDLER(remove_window_property) ...@@ -2376,7 +2376,7 @@ DECL_HANDLER(remove_window_property)
if (win) if (win)
{ {
atom_t atom = name.len ? find_global_atom( NULL, &name ) : req->atom; atom_t atom = name.len ? find_global_atom( NULL, &name ) : req->atom;
if (atom) reply->handle = remove_property( win, atom ); if (atom) reply->data = remove_property( win, atom );
} }
} }
...@@ -2391,7 +2391,7 @@ DECL_HANDLER(get_window_property) ...@@ -2391,7 +2391,7 @@ DECL_HANDLER(get_window_property)
if (win) if (win)
{ {
atom_t atom = name.len ? find_global_atom( NULL, &name ) : req->atom; atom_t atom = name.len ? find_global_atom( NULL, &name ) : req->atom;
if (atom) reply->handle = get_property( win, atom ); if (atom) reply->data = get_property( win, atom );
} }
} }
...@@ -2418,7 +2418,7 @@ DECL_HANDLER(get_window_properties) ...@@ -2418,7 +2418,7 @@ DECL_HANDLER(get_window_properties)
if (win->properties[i].type == PROP_TYPE_FREE) continue; if (win->properties[i].type == PROP_TYPE_FREE) continue;
data->atom = win->properties[i].atom; data->atom = win->properties[i].atom;
data->string = (win->properties[i].type == PROP_TYPE_STRING); data->string = (win->properties[i].type == PROP_TYPE_STRING);
data->handle = win->properties[i].handle; data->data = win->properties[i].data;
data++; data++;
count--; count--;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment