Rémi Bernon (@rbernon) commented about dlls/dmime/performance.c:
while ((ptr = list_head(&This->messages))) { struct message *message = LIST_ENTRY(ptr, struct message, entry); - struct list *next = ptr->next; list_remove(&message->entry); list_init(&message->entry);
hr = performance_process_message(This, &message->msg, &timeout); - if (hr == DMUS_S_REQUEUE) performance_queue_message(This, message, next); + if (hr == DMUS_S_REQUEUE) performance_queue_message(This, message); if (hr != S_OK) break;
Changing `performance_process_message` return value to `E_PENDING` for instance, I think something like that could work: ```suggestion:-2+0 hr = performance_process_message(This, &message->msg, &timeout); if (hr == DMUS_S_REQUEUE) performance_queue_message(This, message, NULL); else if (hr == E_PENDING) performance_queue_message(This, message, next); if (FAILED(hr)) break; ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4438#note_52848