Es geht um meine BassVis!
@
DelphiManiac
Nein ein Sleep geht nicht da diese den Thread einfriert.
@
Luckie
Mein problem ist halt das aus irgendwelchen gründen die
OpenGl Pugins nicht laufen.
Fenster werden initialisiert aber es findet keine Visualisierung statt.
Meine vermutung deshalb das die Threads in den
OpenGL Plugins nicht beendet werden
Wenn ich nicht über die Winproc gehe dann funktionieren diese aber die Winamp5 Plugins nicht mehr.
Gehe ich über die Winproc dann wird nur das Fenster angezeigt findet aber keine Visualisierung statt
obwohl alle Module und Daten ohne Fehler aus dem Plugin ankommen.
Delphi-Quellcode:
if (VisInfo^.Init)
then
begin
VisWinCounter := VisCounter;
Visinfo^.VisInfoCount := VisWinCounter;
// Neuen Thread erstellen
ThreadHandle := BeginThread(
nil, 0, @WinampVisWin, VisInfo, 0, ThreadId);
// DLL aus Speicher entfernen wenn ThreadHandle = 0
if (ThreadHandle = 0)
then
begin
FreeLibrary(VisDllHandle);
FreeMem(VisInfo);
BassFuncs^.SetError(BASS_ERROR_INIT);
Exit;
end;
// Thread schließen
CloseHandle(ThreadHandle);
//******************************************************
{
//Open This for OpenGL it work
//Only Winamp5 Plugins will not work when aktivate this
//Einschalten um OpenGL Plugins zu testen
//OpenGl geht mit Schließproblemen
Repeat
until DummyWindow <> 0;
VisInfo^.WinHandle := DummyWindow;
VisInfo^.VisModule^.Init(VisInfo^.VisModule);
}
//******************************************************
end;
Wird der code in den kommentierten zeilen aktiviert dann funktioniert
OpenGl.
Dazu muss aber in der Prozedure wo das DummyWindow erstellt wird
Delphi-Quellcode:
//*********************************************
// comment out for testing OpenGL
//Ausschalten um OpenGL Plugins zu testen
VisInfo^.WinHandle := DummyWindow;
WinampVisExecute(Filename, Vismod, VismodCounter, VisInfo^.ParentHandle);
WinampMenu := CreateMenu();
PostMessage(DummyWindow, WM_INITWINAMP, 0, 0);
sleep(25);
// Bis hier Ausschalten
//*********************************************
while (GetMessage(Msg, 0, 0, 0))
do
diese zeilen bis GetMessage kommentiert(ausgeschaltet) werden.
Schlage mich mit dem Problem nun schon seit Monaten rum und finde keine vernünftige lösung
wie ich beides in einklang bringen kann.
Deshalb will ich jetzt mal mit Delay versuchen eine zwangspause einzulegen
die Threads dürfen dabei aber nicht unterbrochen werden.
EDIT:
Warum ich das vermute mit den threads der
OpenGl Plugins
Wenn ich mit der Maus drüberfahre ist immer der Sanduhr Mauszeiger zu sehen.
gruss