"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "server/queue.c" between
wine-5.12.tar.xz and wine-5.13.tar.xz

About: Wine is an Open Source implementation of the MS Windows API on top of X, OpenGL, and Unix. Think of Wine as a compatibility layer for running Windows programs. Development release.

queue.c  (wine-5.12.tar.xz):queue.c  (wine-5.13.tar.xz)
skipping to change at line 1384 skipping to change at line 1384
update_input_key_state( desktop, desktop->keystate, WM_MBUTTONDOWN, wpar am ); update_input_key_state( desktop, desktop->keystate, WM_MBUTTONDOWN, wpar am );
if (flags & MOUSEEVENTF_MIDDLEUP) if (flags & MOUSEEVENTF_MIDDLEUP)
update_input_key_state( desktop, desktop->keystate, WM_MBUTTONUP, wparam ); update_input_key_state( desktop, desktop->keystate, WM_MBUTTONUP, wparam );
if (flags & MOUSEEVENTF_XDOWN) if (flags & MOUSEEVENTF_XDOWN)
update_input_key_state( desktop, desktop->keystate, WM_XBUTTONDOWN, wpar am ); update_input_key_state( desktop, desktop->keystate, WM_XBUTTONDOWN, wpar am );
if (flags & MOUSEEVENTF_XUP) if (flags & MOUSEEVENTF_XUP)
update_input_key_state( desktop, desktop->keystate, WM_XBUTTONUP, wparam ); update_input_key_state( desktop, desktop->keystate, WM_XBUTTONUP, wparam );
} }
/* release the hardware message currently being processed by the given thread */ /* release the hardware message currently being processed by the given thread */
static void release_hardware_message( struct msg_queue *queue, unsigned int hw_i static void release_hardware_message( struct msg_queue *queue, unsigned int hw_i
d, d )
int remove )
{ {
struct thread_input *input = queue->input; struct thread_input *input = queue->input;
struct message *msg; struct message *msg, *other;
int clr_bit;
LIST_FOR_EACH_ENTRY( msg, &input->msg_list, struct message, entry ) LIST_FOR_EACH_ENTRY( msg, &input->msg_list, struct message, entry )
{ {
if (msg->unique_id == hw_id) break; if (msg->unique_id == hw_id) break;
} }
if (&msg->entry == &input->msg_list) return; /* not found */ if (&msg->entry == &input->msg_list) return; /* not found */
/* clear the queue bit for that message */ /* clear the queue bit for that message */
if (remove) clr_bit = get_hardware_msg_bit( msg );
LIST_FOR_EACH_ENTRY( other, &input->msg_list, struct message, entry )
{ {
struct message *other; if (other != msg && get_hardware_msg_bit( other ) == clr_bit)
int clr_bit;
clr_bit = get_hardware_msg_bit( msg );
LIST_FOR_EACH_ENTRY( other, &input->msg_list, struct message, entry )
{ {
if (other != msg && get_hardware_msg_bit( other ) == clr_bit) clr_bit = 0;
{ break;
clr_bit = 0;
break;
}
} }
if (clr_bit) clear_queue_bits( queue, clr_bit );
update_input_key_state( input->desktop, input->keystate, msg->msg, msg->
wparam );
list_remove( &msg->entry );
free_message( msg );
} }
if (clr_bit) clear_queue_bits( queue, clr_bit );
update_input_key_state( input->desktop, input->keystate, msg->msg, msg->wpar
am );
list_remove( &msg->entry );
free_message( msg );
} }
static int queue_hotkey_message( struct desktop *desktop, struct message *msg ) static int queue_hotkey_message( struct desktop *desktop, struct message *msg )
{ {
struct hotkey *hotkey; struct hotkey *hotkey;
unsigned int modifiers = 0; unsigned int modifiers = 0;
if (msg->msg != WM_KEYDOWN) return 0; if (msg->msg != WM_KEYDOWN) return 0;
if (desktop->keystate[VK_MENU] & 0x80) modifiers |= MOD_ALT; if (desktop->keystate[VK_MENU] & 0x80) modifiers |= MOD_ALT;
skipping to change at line 2079 skipping to change at line 2073
reply->msg = msg_code; reply->msg = msg_code;
reply->wparam = msg->wparam; reply->wparam = msg->wparam;
reply->lparam = msg->lparam; reply->lparam = msg->lparam;
reply->x = msg->x; reply->x = msg->x;
reply->y = msg->y; reply->y = msg->y;
reply->time = msg->time; reply->time = msg->time;
data->hw_id = msg->unique_id; data->hw_id = msg->unique_id;
set_reply_data( msg->data, msg->data_size ); set_reply_data( msg->data, msg->data_size );
if (msg->msg == WM_INPUT && (flags & PM_REMOVE)) if (msg->msg == WM_INPUT && (flags & PM_REMOVE))
release_hardware_message( current->queue, data->hw_id, 1 ); release_hardware_message( current->queue, data->hw_id );
return 1; return 1;
} }
/* nothing found, clear the hardware queue bits */ /* nothing found, clear the hardware queue bits */
clear_queue_bits( thread->queue, clear_bits ); clear_queue_bits( thread->queue, clear_bits );
return 0; return 0;
} }
/* increment (or decrement if 'incr' is negative) the queue paint count */ /* increment (or decrement if 'incr' is negative) the queue paint count */
void inc_queue_paint_count( struct thread *thread, int incr ) void inc_queue_paint_count( struct thread *thread, int incr )
{ {
skipping to change at line 2596 skipping to change at line 2590
if (!current->queue) set_error( STATUS_ACCESS_DENIED ); if (!current->queue) set_error( STATUS_ACCESS_DENIED );
else if (current->queue->recv_result) else if (current->queue->recv_result)
reply_message( current->queue, req->result, 0, req->remove, reply_message( current->queue, req->result, 0, req->remove,
get_req_data(), get_req_data_size() ); get_req_data(), get_req_data_size() );
} }
/* accept the current hardware message */ /* accept the current hardware message */
DECL_HANDLER(accept_hardware_message) DECL_HANDLER(accept_hardware_message)
{ {
if (current->queue) if (current->queue)
release_hardware_message( current->queue, req->hw_id, req->remove ); release_hardware_message( current->queue, req->hw_id );
else else
set_error( STATUS_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
} }
/* retrieve the reply for the last message sent */ /* retrieve the reply for the last message sent */
DECL_HANDLER(get_message_reply) DECL_HANDLER(get_message_reply)
{ {
struct message_result *result; struct message_result *result;
struct list *entry; struct list *entry;
struct msg_queue *queue = current->queue; struct msg_queue *queue = current->queue;
 End of changes. 9 change blocks. 
23 lines changed or deleted 17 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)