2013/1/10 Johannes Kroll jkroll@lavabit.com
On Thu, 10 Jan 2013 12:04:02 +0100 Christian Costa titan.costa@gmail.com wrote:
In your code you stop checking F7 just before the last byte (until position lpMidiOutHdr->dwBufferLength-2); You can check the last byte as well. This is also valid and simplify the condition. The missing F7 byte case is handled by the for loop.
Ah, you mean that check. Yes, it's not strictly necessary, it just decides whether it has to save & restore dwBufferSize or not.
Regarding the single MMDRV_Message call, I was thinking about something like below. This also enable printing a WARN when F7 is missing which can be useful
for
debug.
DWORD oldBufferLength = lpMidiOutHdr->dwBufferLength; DWORD ret; for(i = 0; i < lpMidiOutHdr->dwBufferLength; i++) /* SysEx messages are terminated by a 0xF7 byte. If the buffer
contains additional bytes, send only the bytes up to the termination byte. */ if((unsigned char)lpMidiOutHdr->lpData[i] == 0xF7) { lpMidiOutHdr->dwBufferLength = i+1;
break; } if (i == lpMidiOutHdr->dwBufferLength) WARN("SysEx termination byte 0xF7 missing\n") ret = MMDRV_Message(wmld, MODM_LONGDATA, (DWORD_PTR)lpMidiOutHdr,
uSize);
/* restore the midi header to its original state. */ lpMidiOutHdr->dwBufferLength = oldBufferLength; return ret;
I see nothing wrong with that apart from the broken formatting (please don't use HTML mail). Did you test it?
It was not intended to be used as is. It's just to show what I had in mind.
I don't care which version is used, I would just be very happy if *something* is included which makes my MIDI device work with Wine.
There is no reason your patch will not get in. Generally, it's just patches need to have the quality required to be committed. Sometime it can takes several iterations.
How does this generally work here, will there be feedback from a maintainer on whether the patch will be included, or is it usually just silently included?
Alexandre Julliard (or whoever decides this): Could you comment please?
For a patch which is ok, it will be committed silently by Alexandre. You may already know the patches status page at http://source.winehq.org/patches. Usually maintainers or skilled people of a specific area look at patches and give some feedback if something seems wrong or not clear.
And Christian, please, configure your mail client. The list mails I get from you are directed to me, not the list, and they are missing the List-Id field.
When I use gmail web client, I don't have good results sometimes. Maybe
there is a configuration for that. I'm full open to any hint. Regarding emails addresses, I write to someone with wine-devel in cc but I'm ok to use only wine-devel with you.