Zitat von
marabu:
Ich habe noch mal ganz zum Anfang zurück geblättert und festgestellt, dass csH in winampDSPinfo ursprünglich als TRTLCriticalSection verbaut war - also nix mit Pointer. Warum bist du davon abgekommen? Du kannst das ruhig so beibehalten.
Grüße, marabu
weil beim stopen des Plugin
Delphi-Quellcode:
// Stopt eingeladenes Winamp DSP Plugin (aber entlädt es nicht)
Procedure BASS_WADSP_Stop(plugin : HDSP); stdcall;
var
winampDsp : WINAMPPLUGINPROPDSP;
begin
winampDsp := GetDSP(plugin);
if winampDsp <> nil then
begin
if winampDsp^.pDSP <> nil then
begin
BASS_WADSP_ChannelRemoveDSP(plugin);
EnterCriticalSection(winampDsp^.csH);
winampDsp^.pDSP^.Quit(winampDsp^.pDSP);
winampDsp^.pDSP := nil;
winampDsp^.module := -1;
LeaveCriticalSection(winampDsp^.csH);
end;
end;
end;
die anwendung sich verabschiedet.
Das gleiche auch bei allen anderen Functionen welche EnterCriticalSection in anspruch nehmen.
Auch sieht im CCode jede zeile so aus.
Code:
EnterCriticalSection(&winampDsp->csH);
Das '&' ist kein Operator = @ wäre dann ein pointer.
Also alles wieder zurück ? Kein Problem.
grüß