http://bugs.winehq.org/show_bug.cgi?id=20296
--- Comment #37 from Amos Wenger amos@official.fm 2011-04-05 07:55:47 CDT --- Created an attachment (id=33948) --> (http://bugs.winehq.org/attachment.cgi?id=33948) ole-try-inproc-even-when-local.patch
(In reply to comment #34)
(In reply to comment #33)
(In reply to comment #32)
The patch is a hack, it doesn't make sense to include it in a Wine release.
What, like this would be the first hack integrated in wine mainline? Haha :)
CLSCTX_LOCAL_SERVER should be implemented then the patch can be included.
Even if its ugly like duplicating CLSCTX_INPROC_SERVER code base to perform CLSCTX_LOCAL_SERVER tasks. So that CLSCTX_INPROC_SERVER and CLSCTX_LOCAL_SERVER are two independent code lines and that LOCAL_SERVER can keep on progressing until it has full functionality.
Okay, I understand, apologies for the making fun of.
So here's my attempt at an ugly patch ;) that duplicates INPROC_SERVER codebase in the LOCAL_SERVER code path. As far as I can tell, it allows me to launch LoL correctly, and it shouldn't break other applications, although I haven't tested yet.
I haven't fully understood what Christoph Hohmann said in comment #15 about checking the DllSurrogate key and starting a surrogate server - I'm very much an OLE noob, just trying to sort out through this mess reading a bit of msdn now and then.
Is there any drawback to the current approach? Ie. some cases where dwClsContext might have the CLSCTX_LOCAL_SERVER flag and it *should* fail to look up a given class, and with my patch it would (wrongly) succeed if we can find it inproc?
Or could we even consider a League-of-legends-specific fix? (ie. hardcoded check for CLSID {629f8434-0530-41e6-b7c5-61a82faa3df2}). I really don't like app-specific hacks, but at least it wouldn't touch any other app afaik.
I'm really just looking for a solution so that wine mainline could run LoL only with a few winetricks (d3dx9, vcrun2005, ie6 - those seem to be the winning trio)
P.S: also, I wasn't too sure how to format my 'patch', it's really just the output of git diff right now, is there a better way?