Thanks for bringing this up. I have no clue of this Win32 stuff, so if you
know how to fix it properly I would welcome a pull request on that.

Tom

2017-11-04 12:26 GMT+01:00 Carlo Bramini <carlo.bra...@libero.it>:

> Hello,
>
> my primary platforms are Windows 7 and XP.
> I'm sorry, but I wouldn't say "this works fine on XP".
> It may work for luck, or it could work but with some malfunctions that you
> cannot see at user level.
> Perhaps it could also depend on the application using libfluidsynth:
> maybe, with the console mode program included with the library, you won't
> see troubles at least apparently, but it could not be true that we will be
> always lucky.
>
> Sincerely.
>
>
> > Il 4 novembre 2017 alle 0.54 Ceresa Jean-Jacques <
> jean-jacques.cer...@orange.fr> ha scritto:
> >
> > Hello Carlo,
> >
> > > I think that the best thing to do is to revert this change and restore
> original code, with the little addition of keeping the window handle
> private into each fluid_dsound_audio_driver_t structure.
> >
> > You are right, this is a more straigtforward solution.
> >
> > Despite the fact you are right, even if window creation inside DllMain()
> is a very bad practice, this works fine on XP. So, which Windows OS do you
> usualy use ?
> >
> > Regards
> >
> > > > Message du 01/11/17 15:00
> > > > De : "Carlo Bramini" <carlo.bra...@libero.it>
> > > > A : fluid-dev@nongnu.org
> > > > Copie à :
> > > > Objet : [fluid-dev] Error in DllMain.
> > > >
> > > > Hello,
> > > > I had noticed that Fluidsynth for Windows is doing a very dangerous
> thing.
> > > > Actually, when I tried to run my test program with double click but
> incidentally nothing happened, I got quite immediately this suspect.
> > > > Into fluid_dll.c there is an implementation of DllMain with some
> code.
> > > > In this code, it creates an handle to a window to be used for
> setting the cooperative level in the directsound driver. This is wrong.
> > > > DllMain should never call some functions, because during the lock
> applied by the loader these functions may not be resolved, may not work
> correctly, could crash or can cause some strange behaviors. On Windows
> 9x/ME, this could even hang the entire OS. The NT kernel is more robust and
> protected, so the effects are tipically limited to the current local
> thread. It seems to me that it was implemented in a different manner in the
> past, because fluid_win32_create_window() is also called into
> fluid_dsound.c. Perhaps, somebody did this change without knowing the
> drawbacks, by thinking that in this way one window handle could be created
> just once, when the DLL is loaded, instead of creating and destroying it
> for each directsound object created.
> > > > More details could be found here:
> > > >
> > > > https://msdn.microsoft.com/en-us/library/windows/desktop/
> dn633971(v=vs.85).aspx
> > > >
> > > > I think that the best thing to do is to revert this change and
> restore original code, with the little addition of keeping the window
> handle private into each fluid_dsound_audio_driver_t structure.
> > > >
> > > > Sincerely.
> > > >
> > > > _______________________________________________
> > > > fluid-dev mailing list
> > > > fluid-dev@nongnu.org
> > > > https://lists.nongnu.org/mailman/listinfo/fluid-dev
> > > >
> > _______________________________________________
> > fluid-dev mailing list
> > fluid-dev@nongnu.org
> > https://lists.nongnu.org/mailman/listinfo/fluid-dev
>
> _______________________________________________
> fluid-dev mailing list
> fluid-dev@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/fluid-dev
>
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to