[PATCH] server/console: Allow waiting on console_input

Keno Fischer keno at juliacomputing.com
Tue Aug 16 17:46:19 CDT 2016


> To keep the testcase similar to the original code thats probably fine, however I
> would like to point out that you do not really need an asynchronous wait here.
> You could basically test the same with WaitForSingleObject(input_handle, INFINITE).

I wanted to make sure to keep the ordering of events the same as in
the original, which is WaitForSingleEvent->WriteConsoleInput. It seems
like reversing the order here might go down a different code path,
though perhaps here's not the place to test that, since that's handled
in the generic waiting code.

>
>> +    /* give worker thread a chance to start up */
>> +    Sleep(100);
>> +    record.EventType = KEY_EVENT;
>> +    record.Event.KeyEvent.bKeyDown = 1;
>> +    record.Event.KeyEvent.wRepeatCount = 1;
>> +    record.Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
>> +    record.Event.KeyEvent.wVirtualScanCode = VK_RETURN;
>> +    record.Event.KeyEvent.uChar.AsciiChar = '\r';
>
> If I don't miss anything this does not initialize the upper byte of the union.

Yes you're correct, since I'm calling WriteConsoleInputW, I should be
using the unicode variant.

>
>> +    record.Event.KeyEvent.dwControlKeyState = 0;
>> +    ret = WriteConsoleInputW(input_handle, &record, 1, &events_written);
>> +    ok(ret == TRUE, "Expected WriteConsoleInputW to return TRUE, got %d\n", ret);
>> +    wait_ret = WaitForSingleObject(complete_event, INFINITE);
>> +    ok(wait_ret == WAIT_OBJECT_0, "Expected the handle to be signaled");
>
> There is a linebreak missing in the line above. For completeness, it also wouldn't
> hurt to add another test after calling FlushConsoleInputBuffer() to make sure it
> times out as expected.

Sounds good.



More information about the wine-devel mailing list