Делаю так: Код (Text): if dd<>nil then begin if ddsback<>nil then begin ddsback._Release; ddsback:=nil; end; if ddsprimary<>nil then begin ddsprimary._Release; ddsprimary:=nil; end; dd.RestoreDisplayMode; dd._Release; dd:=nil; end; //где dd: IDirectDraw7; ddsprimary соответственно surface и при выходе прога зависает =( add: всё трабл решил ламерский баг, модераторам: тему можно удалить.