http://bugs.winehq.org/show_bug.cgi?id=20296
--- Comment #41 from oiaohm oiaohm@gmail.com 2011-04-05 23:25:18 CDT --- (In reply to comment #40)
(In reply to comment #39)
Sorry, that's even worse. The objection is that the patch is a kludge, whether or not it includes duplicated code.
I agree, I understand this patch will never be accepted as-is, just trying to gain a little momentum. Can anyone give directions for a cleaner approach? Christoph seems to suggest that a "surrogate server" (not sure what it is) is needed, but ends his comment with "So may not be needed on wine and the DLL can just be loaded in-process." so I'm not sure what he really meant.
There's good will here, I just need better feedback :/
First thing is understanding how CLSCTX_INPROC_SERVER and CLSCTX_LOCAL_SERVER are different. So that you have the patch heading down the right line to implement CLSCTX_LOCAL_SERVER.
http://msdn.microsoft.com/en-us/library/ms693716%28v=vs.85%29.aspx Very important read on the subject.
Same process space as the caller is INPROC SERVER . Own process is LOCAL SERVER. Also as a own process is shared between all callers. This is why applications will snap if you just redirect LOCAL to INPROC. The reverse would have stood a kind of a chance but also would cause random breakages.
This is why I said you might have to duplicate sections of the INPROC code base into a new Local Server code base.
The pure difference between the two is why I said "Dr. Egon Spengler: Don't cross the streams.".
I guess never you watched ghost busters. Dr. Egon Spengler: Don't cross the streams. Dr. Peter Venkman: Why? Dr. Egon Spengler: It would be bad. Dr. Peter Venkman: I'm a little fuzzy on the whole "good/bad" thing, here. What do you mean, "bad"? Dr. Egon Spengler: Try to imagine all life as you know it stopping instantaneously and every molecule in your body exploding at the speed of light.
Anyone who watches the full movie at the end they do cross the streams and live but is a rare case event that you will live through it. Currently you are in that lucky location.
Basically you are doing something so far on the scale of bad really don't want to be doing that. Crossing INPROC functionally with LOCAL is crossing the streams.
INPROC and LOCAL are basically two different code paths. Local requires creating a new process and other things so it works right. Sections of Inproc operations maybe recyclable.
For a patch to be accepted that is kinda a hack. It will have to show a plan to get from the kind of a hack to correctly functional or at least it will not hinder getting to correct functionality.
Basically if I am quoting ghost busters to you have got something critically wrong.