[PATCH 1/6] user32: Add get/release routines for accessing cursor frames.

Erich Hoover ehoover at mines.edu
Fri Mar 11 09:40:23 CST 2011

On Fri, Mar 11, 2011 at 8:01 AM, Alexandre Julliard <julliard at winehq.org> wrote:
> Erich Hoover <ehoover at mines.edu> writes:
>> @@ -135,6 +139,16 @@ static void release_icon_ptr( HICON handle, struct cursoricon_object *ptr )
>>      release_user_handle_ptr( ptr );
>>  }
>> +struct static_cursoricon_object *get_icon_data( struct cursoricon_object *obj, int istep )
>> +{
>> +    return &obj->frames[istep];
>> +}
>> +
>> +void release_icon_data( struct cursoricon_object *obj, int istep, struct static_cursoricon_object *icon_data )
>> +{
>> +    /* placeholder */
>> +}
> I find your data structures confusing. You add a concept of icon_data
> separate from icon_ptr, but it doesn't correspond to the data
> structures, there's no such thing as an icon_data. There should be a way
> of making this clearer.

The idea of the get_icon_data() is to return the frame data for a
particular icon step, so for split animated cursors (patch 3) the
routine can appropriately call get_icon_ptr() on the "sub-icon" (and
release_icon_data can call release_icon_ptr).  I considered calling
this get_icon_frame() and having it return the existing
"cursoricon_frame" structure, but DrawIconEx needs to access the
frame-specific width and height - since many animated cursors do not
have a global width and height.  Would you prefer that I call these
get/release_icon_frame() and move the width and height into
"cursoricon_frame" ?

Erich Hoover
ehoover at mines.edu

More information about the wine-devel mailing list