From 5f86f14e53b9f107ce030e6cb61efba9f5fc6a4b Mon Sep 17 00:00:00 2001 From: brunzelchen Date: Sun, 2 Jan 2011 20:33:36 +0000 Subject: - fix: crash at startup if no webcam connected - some string updates git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1 Challenge MOD@2786 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenMain.pas | 12 +++- Game/Code/Screens/UScreenOptionsRecord.pas | 47 +++++++++++----- Game/Code/Screens/UScreenSing.pas | 2 +- Game/Code/Screens/UScreenSongMenu.pas | 6 ++ Game/Code/UltraStar.bdsproj | 4 +- Game/Code/UltraStar.dpr | 17 ++++-- Game/Code/lib/DSPack/UCaptureWDM.pas | 88 ++++++++++++++++++++---------- Game/Output/Changelog.german.txt | 2 +- Installer/settings/variables.nsh | 2 +- 9 files changed, 127 insertions(+), 53 deletions(-) diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index bc2019b9..8c03a53f 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -25,7 +25,6 @@ type procedure InteractInc; override; procedure InteractDec; override; procedure SetAnimationProgress(Progress: real); override; - //function Draw: boolean; override; end; const @@ -314,6 +313,9 @@ begin end; function TScreenMain.Draw: boolean; +var + txt: string; + begin Result := inherited Draw; @@ -324,6 +326,14 @@ begin begin StartScreenScredits; end; + + glColor4f(1,1,1,1); + SetFontStyle(0); + SetFontItalic(False); + SetFontSize(6); + txt := Language.Translate('US_VERSION_NUMBER'); + SetFontPos(795 - glTextWidth(PChar(txt)), 580); + glPrint(PChar(txt)); end; procedure TScreenMain.InteractNext; diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index 3ff73cca..807e1cfb 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -146,14 +146,22 @@ begin if (Length(IWebCamDevice)-1 < Ini.WebCamID) then Ini.WebCamID := 0; - IWebCamMedia := ListMediaTypes(Ini.WebCamID); + ListMediaTypes(Ini.WebCamID, IWebCamMedia); - SelectSlideWebCamDevice := AddSelectSlide(Theme.OptionsRecord.SelectSlideWebCamDevice, Ini.WebCamID, IWebCamDevice); - SelectSlideWebCamMedia := AddSelectSlide(Theme.OptionsRecord.SelectSlideWebCamMedia, Ini.WebCamMediaID, IWebCamMedia); + if (Length(IWebCamMedia)=0) then + begin + Ini.EnableWebCam := 0; + WebCamPreviewOn := false; + end else + begin + SelectSlideWebCamDevice := AddSelectSlide(Theme.OptionsRecord.SelectSlideWebCamDevice, Ini.WebCamID, IWebCamDevice); + SelectSlideWebCamMedia := AddSelectSlide(Theme.OptionsRecord.SelectSlideWebCamMedia, Ini.WebCamMediaID, IWebCamMedia); - WebCamPreviewOn := (Ini.EnableWebCam=1); + WebCamPreviewOn := (Ini.EnableWebCam=1); + end; end else WebCamPreviewOn := false; + AddButton(Theme.OptionsRecord.ButtonExit); if (Length(Button[0].Text)=0) then AddButtonText(14, 20, Theme.Options.Description[7]); @@ -174,12 +182,18 @@ begin if (Length(IWebCamDevice)-1 < Ini.WebCamID) then Ini.WebCamID := 0; - IWebCamMedia := ListMediaTypes(Ini.WebCamID); - - UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideCard, SelectSlideWebCamDevice, IWebCamDevice, Ini.WebCamID); - UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideInput, SelectSlideWebCamMedia, IWebCamMedia, Ini.WebCamMediaID); + ListMediaTypes(Ini.WebCamID, IWebCamMedia); - WebCamPreviewOn := (Ini.EnableWebCam=1); + if (Length(IWebCamMedia)=0) then + begin + Ini.EnableWebCam := 0; + WebCamPreviewOn := false; + end else + begin + UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideCard, SelectSlideWebCamDevice, IWebCamDevice, Ini.WebCamID); + UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideInput, SelectSlideWebCamMedia, IWebCamMedia, Ini.WebCamMediaID); + WebCamPreviewOn := (Ini.EnableWebCam=1); + end; end else WebCamPreviewOn := false; @@ -237,12 +251,19 @@ begin if (Length(IWebCamDevice)-1 < Ini.WebCamID) then Ini.WebCamID := 0; - IWebCamMedia := ListMediaTypes(Ini.WebCamID); + ListMediaTypes(Ini.WebCamID, IWebCamMedia); - UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideWebCamDevice, SelectSlideWebCamDevice, IWebCamDevice, Ini.WebCamID); - UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideWebCamMedia, SelectSlideWebCamMedia, IWebCamMedia, Ini.WebCamMediaID); + if (Length(IWebCamMedia)=0) then + begin + Ini.EnableWebCam := 0; + WebCamPreviewOn := false; + end else + begin + UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideWebCamDevice, SelectSlideWebCamDevice, IWebCamDevice, Ini.WebCamID); + UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideWebCamMedia, SelectSlideWebCamMedia, IWebCamMedia, Ini.WebCamMediaID); - WebCamPreviewOn := (Ini.EnableWebCam=1); + WebCamPreviewOn := (Ini.EnableWebCam=1); + end; end else WebCamPreviewOn := false; diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index daad5d86..4d1b918c 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -2013,7 +2013,7 @@ begin if ShowFinish then begin if (not Music.Finished) and (not medley_end or (ScreenSong.Mode <> smMedley)) - and ((AktSong.Finish = 0) or (Music.Position + Ini.LipSync*0.01 <= AktSong.Finish)) then + and ((AktSong.Finish = 0) or ((Music.Position + Ini.LipSync*0.01)*1000 <= AktSong.Finish)) then begin //Pause Mod: if not Paused then diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index b3a77879..e209a176 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -197,7 +197,10 @@ begin ScreenSong.ChangeMusic; MenuShow(CurMenu); end else if (CurMenu = SM_Playlist_Add) then + begin MenuShow(CurMenu); + Interaction := 3; + end; end; SDLK_LEFT: begin @@ -223,7 +226,10 @@ begin ScreenSong.ChangeMusic; MenuShow(CurMenu); end else if (CurMenu = SM_Playlist_Add) then + begin MenuShow(CurMenu); + Interaction := 3; + end; end; SDLK_1: diff --git a/Game/Code/UltraStar.bdsproj b/Game/Code/UltraStar.bdsproj index 36df4a05..2f94b78a 100644 --- a/Game/Code/UltraStar.bdsproj +++ b/Game/Code/UltraStar.bdsproj @@ -170,7 +170,9 @@ 1.0.0.0 - + + + Borland InterBase Express Components Intraweb 8.0 Design Package for Borland Development Studio 2006 Indy 10 Core Design Time diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index adf0d8ee..ba63c085 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -122,15 +122,18 @@ uses UVideo in 'Classes\UVideo.pas'; const - Version = 'UltraStar Deluxe Challenge, Medley & Duet Edition r9.5'; + VersionName = 'UltraStar Deluxe Challenge, Medley & Duet Edition'; + VersionNumber = 'r9.7'; var - WndTitle: string; - hWnd: THandle; - I: Integer; + WndTitle: string; + hWnd: THandle; + I: Integer; + VersionString: string; begin - WndTitle := Version; + VersionString := VersionName + ' ' + VersionNumber; + WndTitle := VersionString; //------------------------------ //Start more than One Time Prevention @@ -174,7 +177,9 @@ begin Log.LogStatus('Initialize Paths', 'Initialization'); InitializePaths; Log.LogStatus('Load Language', 'Initialization'); Language := TLanguage.Create; //Add Const Values: - Language.AddConst('US_VERSION', Version); + Language.AddConst('US_VERSION', VersionString); + Language.AddConst('US_VERSION_NUMBER', VersionNumber); + Log.BenchmarkEnd(1); Log.LogBenchmark('Loading Language', 1); diff --git a/Game/Code/lib/DSPack/UCaptureWDM.pas b/Game/Code/lib/DSPack/UCaptureWDM.pas index c483e58a..10596d54 100644 --- a/Game/Code/lib/DSPack/UCaptureWDM.pas +++ b/Game/Code/lib/DSPack/UCaptureWDM.pas @@ -66,7 +66,7 @@ type procedure Stop; end; - function ListMediaTypes(DeviceID: integer): TList; + procedure ListMediaTypes(DeviceID: integer; var types: TList); procedure GetCapDevices(var names: TList); implementation @@ -98,7 +98,7 @@ begin end; end; -function ListMediaTypes(DeviceID: integer): TList; +procedure ListMediaTypes(DeviceID: integer; var types: TList); var PinList: TPinList; tSysDev: TSysDevEnum; @@ -108,40 +108,70 @@ var k: Integer; begin - SetLength(Result, 0); + SetLength(types, 0); - tSysDev := TSysDevEnum.Create(CLSID_VideoInputDeviceCategory); + try + tSysDev := TSysDevEnum.Create(CLSID_VideoInputDeviceCategory); - FilterGraph := TFilterGraph.Create( nil ); - FilterGraph.Mode := gmCapture; - FilterGraph.Active := False; - FilterGraph.AutoCreate := False; - FilterGraph.GraphEdit := True; + FilterGraph := TFilterGraph.Create( nil ); + FilterGraph.Mode := gmCapture; + FilterGraph.Active := False; + FilterGraph.AutoCreate := False; + FilterGraph.GraphEdit := True; - Filter := TFilter.Create( nil ); - Filter.FilterGraph := FilterGraph; + Filter := TFilter.Create( nil ); + Filter.FilterGraph := FilterGraph; - Filter.BaseFilter.Moniker := tSysDev.GetMoniker(DeviceID); - Filter.FilterGraph.Active := true; - PinList := TPinList.Create(Filter as IBaseFilter); - VideoMediaTypes := TEnumMediaType.Create(PinList.First); + Filter.BaseFilter.Moniker := tSysDev.GetMoniker(DeviceID); + Filter.FilterGraph.Active := true; + PinList := TPinList.Create(Filter as IBaseFilter); + VideoMediaTypes := TEnumMediaType.Create(PinList.First); - SetLength(Result, VideoMediaTypes.Count); - for k := 0 to VideoMediaTypes.Count - 1 do - begin - Result[k] := VideoMediaTypes.MediaFormatDescription[k]; - //writeln(Result[k]); - //writeln(VideoMediaTypes.MediaFormatDescription[k]); + SetLength(types, VideoMediaTypes.Count); + for k := 0 to VideoMediaTypes.Count - 1 do + begin + types[k] := VideoMediaTypes.MediaFormatDescription[k]; + //writeln(Result[k]); + //writeln(VideoMediaTypes.MediaFormatDescription[k]); + end; + except + SetLength(types, 0); end; - PinList.Free; - VideoMediaTypes.Free; - FilterGraph.Stop; - FilterGraph.ClearGraph; - FilterGraph.Active := False; - FilterGraph.Free; - Filter.Free; - tSysDev.Free; + try + if (PinList<>nil) then + PinList.Free; + except + end; + + try + if (VideoMediaTypes<>nil) then + VideoMediaTypes.Free; + except + end; + + try + if (FilterGraph<>nil) then + begin + FilterGraph.Stop; + FilterGraph.ClearGraph; + FilterGraph.Active := False; + FilterGraph.Free; + end; + except + end; + + try + if (Filter<>nil) then + Filter.Free; + except + end; + + try + if (tSysDev<>nil) then + tSysDev.Free; + except + end; end; constructor TSampleClass.Create(DeviceID, MediaTypeID: integer); diff --git a/Game/Output/Changelog.german.txt b/Game/Output/Changelog.german.txt index 31c74055..d3257951 100644 --- a/Game/Output/Changelog.german.txt +++ b/Game/Output/Changelog.german.txt @@ -1,4 +1,4 @@ -Ultrastar Deluxe Challenge, Medley & Duet Edition r9.4 vom 24.12.2010 +Ultrastar Deluxe Challenge, Medley & Duet Edition r9.5 vom 24.12.2010 ----------------------------- NEW: (Editor) Stimmhöhen können im Editor eingesungen werden (setzen mit N). Man kann mit SHIFT+N eine Zeile, mit ALT+N das ganze Lied "einsingen". Hierbei wird eine Gesangspur hinter den Noten gelegt, an der man sich orientieren kann. Die Funktion dient dazu, um ein Lied zu überprüfen. diff --git a/Installer/settings/variables.nsh b/Installer/settings/variables.nsh index b6ff0915..f634076f 100644 --- a/Installer/settings/variables.nsh +++ b/Installer/settings/variables.nsh @@ -1,7 +1,7 @@ ; These are the common used variables ; for the USdx Challenge, Medley & Duet Edition Installation Wizard -!define version "r9.5" ; Current version of UltraStar Deluxe Challenge, Medley & Duet Edition +!define version "r9.7" ; Current version of UltraStar Deluxe Challenge, Medley & Duet Edition !define p_name "UltraStar Deluxe CMD Edition" ; Just the name of the program !define publisher "USDX Team" ; Publisher !define homepage "http://www.ultrastardeluxe.org/" ; Project Homepage -- cgit v1.2.3