xbmc/interfaces/interfaces.a \
xbmc/interfaces/json-rpc/json-rpc.a \
xbmc/linux/linux.a \
+ xbmc/listproviders/listproviders.a \
xbmc/music/dialogs/musicdialogs.a \
xbmc/music/infoscanner/musicscanner.a \
xbmc/music/karaoke/karaoke.a \
xbmc/rendering/rendering.a \
xbmc/settings/settings.a \
xbmc/settings/dialogs/settings_dialogs.a \
+ xbmc/settings/lib/settings_lib.a \
xbmc/settings/windows/settings_windows.a \
xbmc/storage/storage.a \
xbmc/utils/utils.a \
$(SILENT_LD) $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -o $@ $(MAINOBJS) -Wl,--start-group $(DYNOBJSXBMC) $(OBJSXBMC) -Wl,--end-group -Wl,--no-undefined $(NWAOBJSXBMC) $(LIBS)
endif
-xbmc/main/main.a:
+xbmc/main/main.a: force
$(MAKE) -C xbmc/main
-xbmc.bin: $(OBJSXBMC) $(DYNOBJSXBMC) $(NWAOBJSXBMC) $(MAINOBJS) xbmc/main/main.a
+xbmc.bin: $(OBJSXBMC) $(DYNOBJSXBMC) $(NWAOBJSXBMC) $(MAINOBJS)
ifeq ($(findstring osx,@ARCH@), osx)
$(SILENT_LD) $(CXX) $(LDFLAGS) -o xbmc.bin -Wl,-all_load,-ObjC $(DYNOBJSXBMC) $(NWAOBJSXBMC) $(OBJSXBMC) $(LIBS) -rdynamic
5538433415F3685C00CE061B /* NptAppleAutoreleasePool.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5538433315F3685C00CE061B /* NptAppleAutoreleasePool.mm */; settings = {COMPILER_FLAGS = "-I$SRCROOT/lib/libUPnP/Platinum/Source/Core -I$SRCROOT/lib/libUPnP/Platinum/Source/Platinum -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaConnect -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaRenderer -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaServer -I$SRCROOT/lib/libUPnP/Platinum/Source/Extras -I$SRCROOT/lib/libUPnP/Neptune/Source/System/Posix -I$SRCROOT/lib/libUPnP/Neptune/Source/Core"; }; };
5558ED10176396CD00118C35 /* StereoscopicsManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5558ED0E176396CD00118C35 /* StereoscopicsManager.cpp */; };
55611BA31766672F00754072 /* RenderFlags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55611BA21766672F00754072 /* RenderFlags.cpp */; };
+ 55D3604E1826CAB900DA66D2 /* OverlayRendererGUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55D3604C1826CAB900DA66D2 /* OverlayRendererGUI.cpp */; };
7C0B98A4154B79C30065A238 /* AEDeviceInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0B98A1154B79C30065A238 /* AEDeviceInfo.cpp */; };
+ 7C140989183224B8009F9411 /* ISetting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14096F183224B8009F9411 /* ISetting.cpp */; };
+ 7C14098A183224B8009F9411 /* ISetting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14096F183224B8009F9411 /* ISetting.cpp */; };
+ 7C14098B183224B8009F9411 /* ISetting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14096F183224B8009F9411 /* ISetting.cpp */; };
+ 7C14098C183224B8009F9411 /* ISettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140972183224B8009F9411 /* ISettingControl.cpp */; };
+ 7C14098D183224B8009F9411 /* ISettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140972183224B8009F9411 /* ISettingControl.cpp */; };
+ 7C14098E183224B8009F9411 /* ISettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140972183224B8009F9411 /* ISettingControl.cpp */; };
+ 7C14098F183224B8009F9411 /* Setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140978183224B8009F9411 /* Setting.cpp */; };
+ 7C140990183224B8009F9411 /* Setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140978183224B8009F9411 /* Setting.cpp */; };
+ 7C140991183224B8009F9411 /* Setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140978183224B8009F9411 /* Setting.cpp */; };
+ 7C140992183224B8009F9411 /* SettingCategoryAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097A183224B8009F9411 /* SettingCategoryAccess.cpp */; };
+ 7C140993183224B8009F9411 /* SettingCategoryAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097A183224B8009F9411 /* SettingCategoryAccess.cpp */; };
+ 7C140994183224B8009F9411 /* SettingCategoryAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097A183224B8009F9411 /* SettingCategoryAccess.cpp */; };
+ 7C140995183224B8009F9411 /* SettingConditions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097C183224B8009F9411 /* SettingConditions.cpp */; };
+ 7C140996183224B8009F9411 /* SettingConditions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097C183224B8009F9411 /* SettingConditions.cpp */; };
+ 7C140997183224B8009F9411 /* SettingConditions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097C183224B8009F9411 /* SettingConditions.cpp */; };
+ 7C140998183224B8009F9411 /* SettingDependency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097F183224B8009F9411 /* SettingDependency.cpp */; };
+ 7C140999183224B8009F9411 /* SettingDependency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097F183224B8009F9411 /* SettingDependency.cpp */; };
+ 7C14099A183224B8009F9411 /* SettingDependency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C14097F183224B8009F9411 /* SettingDependency.cpp */; };
+ 7C14099B183224B8009F9411 /* SettingRequirement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140981183224B8009F9411 /* SettingRequirement.cpp */; };
+ 7C14099C183224B8009F9411 /* SettingRequirement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140981183224B8009F9411 /* SettingRequirement.cpp */; };
+ 7C14099D183224B8009F9411 /* SettingRequirement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140981183224B8009F9411 /* SettingRequirement.cpp */; };
+ 7C14099E183224B8009F9411 /* SettingSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140983183224B8009F9411 /* SettingSection.cpp */; };
+ 7C14099F183224B8009F9411 /* SettingSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140983183224B8009F9411 /* SettingSection.cpp */; };
+ 7C1409A0183224B8009F9411 /* SettingSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140983183224B8009F9411 /* SettingSection.cpp */; };
+ 7C1409A1183224B8009F9411 /* SettingsManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140985183224B8009F9411 /* SettingsManager.cpp */; };
+ 7C1409A2183224B8009F9411 /* SettingsManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140985183224B8009F9411 /* SettingsManager.cpp */; };
+ 7C1409A3183224B8009F9411 /* SettingsManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140985183224B8009F9411 /* SettingsManager.cpp */; };
+ 7C1409A4183224B8009F9411 /* SettingUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140987183224B8009F9411 /* SettingUpdate.cpp */; };
+ 7C1409A5183224B8009F9411 /* SettingUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140987183224B8009F9411 /* SettingUpdate.cpp */; };
+ 7C1409A6183224B8009F9411 /* SettingUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C140987183224B8009F9411 /* SettingUpdate.cpp */; };
7C1A492315A962EE004AF4A4 /* SeekHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C1A492115A962EE004AF4A4 /* SeekHandler.cpp */; };
7C1A85661520522500C63311 /* TextureCacheJob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C1A85631520522500C63311 /* TextureCacheJob.cpp */; };
7C1D682915A7D2FD00658B65 /* DatabaseManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C1D682715A7D2FD00658B65 /* DatabaseManager.cpp */; };
7C1F6EBB13ECCFA7001726AB /* LibraryDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C1F6EB913ECCFA7001726AB /* LibraryDirectory.cpp */; };
+ 7C26126C182068660086E04D /* SettingsOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C26126A182068660086E04D /* SettingsOperations.cpp */; };
+ 7C26126D182068660086E04D /* SettingsOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C26126A182068660086E04D /* SettingsOperations.cpp */; };
+ 7C26126E182068660086E04D /* SettingsOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C26126A182068660086E04D /* SettingsOperations.cpp */; };
7C2612711825B6340086E04D /* DatabaseQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C26126F1825B6340086E04D /* DatabaseQuery.cpp */; };
7C2612721825B6340086E04D /* DatabaseQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C26126F1825B6340086E04D /* DatabaseQuery.cpp */; };
7C2612731825B6340086E04D /* DatabaseQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C26126F1825B6340086E04D /* DatabaseQuery.cpp */; };
- 7C2612671820667C0086E04D /* ISettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C2612631820667C0086E04D /* ISettingControl.cpp */; };
- 7C2612681820667C0086E04D /* ISettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C2612631820667C0086E04D /* ISettingControl.cpp */; };
- 7C2612691820667C0086E04D /* ISettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C2612631820667C0086E04D /* ISettingControl.cpp */; };
7C2D6AE40F35453E00DD2E85 /* SpecialProtocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C2D6AE20F35453E00DD2E85 /* SpecialProtocol.cpp */; };
7C4458BD161E203800A905F6 /* Screenshot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4458BB161E203800A905F6 /* Screenshot.cpp */; };
7C45DBE910F325C400D4BBF3 /* DAVDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C45DBE710F325C400D4BBF3 /* DAVDirectory.cpp */; };
7C4705AE12EF584C00369E51 /* AddonInstaller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4705AC12EF584C00369E51 /* AddonInstaller.cpp */; };
+ 7C4E6F721829AA9700F1068F /* GUIDialogSubtitles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4E6F701829AA9700F1068F /* GUIDialogSubtitles.cpp */; };
+ 7C4E6F731829AA9700F1068F /* GUIDialogSubtitles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4E6F701829AA9700F1068F /* GUIDialogSubtitles.cpp */; };
+ 7C4E6F741829AA9700F1068F /* GUIDialogSubtitles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4E6F701829AA9700F1068F /* GUIDialogSubtitles.cpp */; };
7C5608C70F1754930056433A /* ExternalPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C5608C40F1754930056433A /* ExternalPlayer.cpp */; };
7C62F24210505BC7002AD2C1 /* Bookmark.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C62F24010505BC7002AD2C1 /* Bookmark.cpp */; };
7C62F45E1057A62D002AD2C1 /* DirectoryNodeSingles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C62F45C1057A62D002AD2C1 /* DirectoryNodeSingles.cpp */; };
7C779E3F104A57E500F444C4 /* WinSystemOSXGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C779E2D104A57E500F444C4 /* WinSystemOSXGL.mm */; };
7C779E54104A58F900F444C4 /* GUIWindowTestPatternGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C779E50104A58F900F444C4 /* GUIWindowTestPatternGL.cpp */; };
7C7B2B301134F36400713D6D /* mysqldataset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7B2B2E1134F36400713D6D /* mysqldataset.cpp */; };
+ 7C7BCDC517727951004842FB /* IListProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7BCDBF17727951004842FB /* IListProvider.cpp */; };
+ 7C7BCDC717727951004842FB /* StaticProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7BCDC317727951004842FB /* StaticProvider.cpp */; };
+ 7C7BCDC817727951004842FB /* IListProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7BCDBF17727951004842FB /* IListProvider.cpp */; };
+ 7C7BCDCA17727951004842FB /* StaticProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7BCDC317727951004842FB /* StaticProvider.cpp */; };
+ 7C7BCDCB17727951004842FB /* IListProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7BCDBF17727951004842FB /* IListProvider.cpp */; };
+ 7C7BCDCD17727952004842FB /* StaticProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7BCDC317727951004842FB /* StaticProvider.cpp */; };
7C7CEAF1165629530059C9EB /* AELimiter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7CEAEF165629530059C9EB /* AELimiter.cpp */; };
7C84A59E12FA3C1600CD1714 /* SourcesDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C84A59C12FA3C1600CD1714 /* SourcesDirectory.cpp */; };
7C87B2CE162CE39600EF897D /* PlayerController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C87B2CC162CE39600EF897D /* PlayerController.cpp */; };
7C89674613C03B22003631FE /* InfoBool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89674313C03B22003631FE /* InfoBool.cpp */; };
7C8A14571154CB2600E5FCFA /* TextureCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8A14541154CB2600E5FCFA /* TextureCache.cpp */; };
7C8A187D115B2A8200E5FCFA /* TextureDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8A187A115B2A8200E5FCFA /* TextureDatabase.cpp */; };
+ 7C8FC6EE1829A4580045153D /* DirectoryProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8FC6EC1829A4580045153D /* DirectoryProvider.cpp */; };
+ 7C8FC6EF1829A4580045153D /* DirectoryProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8FC6EC1829A4580045153D /* DirectoryProvider.cpp */; };
+ 7C8FC6F01829A4580045153D /* DirectoryProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8FC6EC1829A4580045153D /* DirectoryProvider.cpp */; };
7C920CF9181669FF00DA1477 /* TextureOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C920CF7181669FF00DA1477 /* TextureOperations.cpp */; };
7C920CFA181669FF00DA1477 /* TextureOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C920CF7181669FF00DA1477 /* TextureOperations.cpp */; };
7C920CFB181669FF00DA1477 /* TextureOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C920CF7181669FF00DA1477 /* TextureOperations.cpp */; };
DF28EDA7170E1A11005FA9D2 /* ProfilesManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF28ED9C170E1A11005FA9D2 /* ProfilesManager.cpp */; };
DF28EDA8170E1A11005FA9D2 /* GUIWindowSettingsProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF28ED9F170E1A11005FA9D2 /* GUIWindowSettingsProfile.cpp */; };
DF28EE03170E1E51005FA9D2 /* DisplaySettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF28EE01170E1E51005FA9D2 /* DisplaySettings.cpp */; };
- DF29668017B2B04300DF10F9 /* SettingRequirement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF29667E17B2B04300DF10F9 /* SettingRequirement.cpp */; };
- DF29668117B2B04300DF10F9 /* SettingRequirement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF29667E17B2B04300DF10F9 /* SettingRequirement.cpp */; };
- DF29668217B2B04300DF10F9 /* SettingRequirement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF29667E17B2B04300DF10F9 /* SettingRequirement.cpp */; };
DF3488E713FD958F0026A711 /* GUIAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF3488E513FD958F0026A711 /* GUIAction.cpp */; };
DF34892A13FD9C780026A711 /* AirPlayServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF34892813FD9C780026A711 /* AirPlayServer.cpp */; };
DF34898213FDAAF60026A711 /* HttpParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF34898113FDAAF60026A711 /* HttpParser.cpp */; };
DF64FE3E16C07AAA00D028FB /* GUIViewState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF64FE3716C07AAA00D028FB /* GUIViewState.cpp */; };
DF64FE4016C07AAA00D028FB /* ViewDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF64FE3A16C07AAA00D028FB /* ViewDatabase.cpp */; };
DF673AA51443819600A5A509 /* AddonManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B49FF41152BFA5001AF8A6 /* AddonManager.cpp */; };
+ DF6D1DFE18312525009DB64F /* OverlayRendererGUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55D3604C1826CAB900DA66D2 /* OverlayRendererGUI.cpp */; };
+ DF6D1DFF18312525009DB64F /* OverlayRendererGUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55D3604C1826CAB900DA66D2 /* OverlayRendererGUI.cpp */; };
DF830D0C15BB260C00602BE6 /* GUIDialogKeyboardGeneric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF830D0A15BB260C00602BE6 /* GUIDialogKeyboardGeneric.cpp */; };
DF830D1215BB262700602BE6 /* GUIKeyboardFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF830D0F15BB262700602BE6 /* GUIKeyboardFactory.cpp */; };
DF89901C1709BB2D00B35C21 /* MediaSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF8990161709BB2D00B35C21 /* MediaSettings.cpp */; };
DFDA3153160E34230047A626 /* DVDOverlayCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFDA3152160E34230047A626 /* DVDOverlayCodec.cpp */; };
DFE4095B17417FDF00473BD9 /* LegacyPathTranslation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFE4095917417FDF00473BD9 /* LegacyPathTranslation.cpp */; };
DFECFADF172D9C5100A43CF7 /* GUIControlSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFADD172D9C5100A43CF7 /* GUIControlSettings.cpp */; };
- DFECFB07172D9CAB00A43CF7 /* ISetting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAEE172D9CAB00A43CF7 /* ISetting.cpp */; };
- DFECFB08172D9CAB00A43CF7 /* Setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF2172D9CAB00A43CF7 /* Setting.cpp */; };
DFECFB09172D9CAB00A43CF7 /* SettingAddon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF4172D9CAB00A43CF7 /* SettingAddon.cpp */; };
- DFECFB0A172D9CAB00A43CF7 /* SettingCategoryAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF6172D9CAB00A43CF7 /* SettingCategoryAccess.cpp */; };
- DFECFB0B172D9CAB00A43CF7 /* SettingConditions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF8172D9CAB00A43CF7 /* SettingConditions.cpp */; };
DFECFB0C172D9CAB00A43CF7 /* SettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFA172D9CAB00A43CF7 /* SettingControl.cpp */; };
- DFECFB0D172D9CAB00A43CF7 /* SettingDependency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFC172D9CAB00A43CF7 /* SettingDependency.cpp */; };
DFECFB0E172D9CAB00A43CF7 /* SettingPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFE172D9CAB00A43CF7 /* SettingPath.cpp */; };
- DFECFB0F172D9CAB00A43CF7 /* SettingSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB00172D9CAB00A43CF7 /* SettingSection.cpp */; };
- DFECFB10172D9CAB00A43CF7 /* SettingsManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB02172D9CAB00A43CF7 /* SettingsManager.cpp */; };
- DFECFB11172D9CAB00A43CF7 /* SettingUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB03172D9CAB00A43CF7 /* SettingUpdate.cpp */; };
DFECFB1C172D9D0100A43CF7 /* BooleanLogic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB1A172D9D0100A43CF7 /* BooleanLogic.cpp */; };
DFECFB4C172D9D6D00A43CF7 /* NetworkServices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB4A172D9D6D00A43CF7 /* NetworkServices.cpp */; };
DFEF0BAC180ADE6400AEAED1 /* FileItemListModification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFEF0BA9180ADE6400AEAED1 /* FileItemListModification.cpp */; };
DFF0F19317528350002DA3A4 /* DVDMessageTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E157C0D25F9FA00618676 /* DVDMessageTracker.cpp */; };
DFF0F19417528350002DA3A4 /* DVDOverlayContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E157E0D25F9FA00618676 /* DVDOverlayContainer.cpp */; };
DFF0F19517528350002DA3A4 /* DVDOverlayRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15800D25F9FA00618676 /* DVDOverlayRenderer.cpp */; };
- DFF0F19617528350002DA3A4 /* DVDPerformanceCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15820D25F9FA00618676 /* DVDPerformanceCounter.cpp */; };
DFF0F19717528350002DA3A4 /* DVDPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15840D25F9FA00618676 /* DVDPlayer.cpp */; };
DFF0F19817528350002DA3A4 /* DVDPlayerAudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15860D25F9FA00618676 /* DVDPlayerAudio.cpp */; };
DFF0F19917528350002DA3A4 /* DVDPlayerSubtitle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15880D25F9FA00618676 /* DVDPlayerSubtitle.cpp */; };
DFF0F39917528350002DA3A4 /* GUIWindowTestPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56352B816E5403400D21BAD /* GUIWindowTestPattern.cpp */; };
DFF0F39A17528350002DA3A4 /* AdvancedSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B7C3A612942132009E7A26 /* AdvancedSettings.cpp */; };
DFF0F39B17528350002DA3A4 /* DisplaySettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF28EE01170E1E51005FA9D2 /* DisplaySettings.cpp */; };
- DFF0F39C17528350002DA3A4 /* ISetting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAEE172D9CAB00A43CF7 /* ISetting.cpp */; };
DFF0F39D17528350002DA3A4 /* MediaSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF8990161709BB2D00B35C21 /* MediaSettings.cpp */; };
DFF0F39E17528350002DA3A4 /* MediaSourceSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF8990181709BB2D00B35C21 /* MediaSourceSettings.cpp */; };
- DFF0F39F17528350002DA3A4 /* Setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF2172D9CAB00A43CF7 /* Setting.cpp */; };
DFF0F3A017528350002DA3A4 /* SettingAddon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF4172D9CAB00A43CF7 /* SettingAddon.cpp */; };
- DFF0F3A117528350002DA3A4 /* SettingCategoryAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF6172D9CAB00A43CF7 /* SettingCategoryAccess.cpp */; };
- DFF0F3A217528350002DA3A4 /* SettingConditions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF8172D9CAB00A43CF7 /* SettingConditions.cpp */; };
DFF0F3A317528350002DA3A4 /* SettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFA172D9CAB00A43CF7 /* SettingControl.cpp */; };
- DFF0F3A417528350002DA3A4 /* SettingDependency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFC172D9CAB00A43CF7 /* SettingDependency.cpp */; };
DFF0F3A517528350002DA3A4 /* SettingPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFE172D9CAB00A43CF7 /* SettingPath.cpp */; };
DFF0F3A617528350002DA3A4 /* Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B7C38E129420E5009E7A26 /* Settings.cpp */; };
- DFF0F3A717528350002DA3A4 /* SettingSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB00172D9CAB00A43CF7 /* SettingSection.cpp */; };
- DFF0F3A817528350002DA3A4 /* SettingsManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB02172D9CAB00A43CF7 /* SettingsManager.cpp */; };
- DFF0F3A917528350002DA3A4 /* SettingUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB03172D9CAB00A43CF7 /* SettingUpdate.cpp */; };
DFF0F3AB17528350002DA3A4 /* SkinSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF89901A1709BB2D00B35C21 /* SkinSettings.cpp */; };
DFF0F3AC17528350002DA3A4 /* VideoSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E1E010D25F9FD00618676 /* VideoSettings.cpp */; };
DFF0F3AD17528350002DA3A4 /* DarwinStorageProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F599CD73108E6A7A0010EC2A /* DarwinStorageProvider.cpp */; };
E38E1FA30D25F9FD00618676 /* DVDMessageTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E157C0D25F9FA00618676 /* DVDMessageTracker.cpp */; };
E38E1FA40D25F9FD00618676 /* DVDOverlayContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E157E0D25F9FA00618676 /* DVDOverlayContainer.cpp */; };
E38E1FA50D25F9FD00618676 /* DVDOverlayRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15800D25F9FA00618676 /* DVDOverlayRenderer.cpp */; };
- E38E1FA60D25F9FD00618676 /* DVDPerformanceCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15820D25F9FA00618676 /* DVDPerformanceCounter.cpp */; };
E38E1FA70D25F9FD00618676 /* DVDPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15840D25F9FA00618676 /* DVDPlayer.cpp */; };
E38E1FA80D25F9FD00618676 /* DVDPlayerAudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15860D25F9FA00618676 /* DVDPlayerAudio.cpp */; };
E38E1FA90D25F9FD00618676 /* DVDPlayerSubtitle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15880D25F9FA00618676 /* DVDPlayerSubtitle.cpp */; };
E49911FB174E5D4500741B6D /* DVDMessageTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E157C0D25F9FA00618676 /* DVDMessageTracker.cpp */; };
E49911FC174E5D4500741B6D /* DVDOverlayContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E157E0D25F9FA00618676 /* DVDOverlayContainer.cpp */; };
E49911FD174E5D4500741B6D /* DVDOverlayRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15800D25F9FA00618676 /* DVDOverlayRenderer.cpp */; };
- E49911FE174E5D4500741B6D /* DVDPerformanceCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15820D25F9FA00618676 /* DVDPerformanceCounter.cpp */; };
E49911FF174E5D4500741B6D /* DVDPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15840D25F9FA00618676 /* DVDPlayer.cpp */; };
E4991200174E5D4500741B6D /* DVDPlayerAudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15860D25F9FA00618676 /* DVDPlayerAudio.cpp */; };
E4991201174E5D4500741B6D /* DVDPlayerSubtitle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E15880D25F9FA00618676 /* DVDPlayerSubtitle.cpp */; };
E499141D174E603C00741B6D /* GUIWindowTestPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F56352B816E5403400D21BAD /* GUIWindowTestPattern.cpp */; };
E499141E174E603C00741B6D /* AdvancedSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B7C3A612942132009E7A26 /* AdvancedSettings.cpp */; };
E499141F174E603C00741B6D /* DisplaySettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF28EE01170E1E51005FA9D2 /* DisplaySettings.cpp */; };
- E4991420174E603C00741B6D /* ISetting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAEE172D9CAB00A43CF7 /* ISetting.cpp */; };
E4991421174E603C00741B6D /* MediaSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF8990161709BB2D00B35C21 /* MediaSettings.cpp */; };
E4991422174E603C00741B6D /* MediaSourceSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF8990181709BB2D00B35C21 /* MediaSourceSettings.cpp */; };
- E4991423174E603C00741B6D /* Setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF2172D9CAB00A43CF7 /* Setting.cpp */; };
E4991424174E603C00741B6D /* SettingAddon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF4172D9CAB00A43CF7 /* SettingAddon.cpp */; };
- E4991425174E603C00741B6D /* SettingCategoryAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF6172D9CAB00A43CF7 /* SettingCategoryAccess.cpp */; };
- E4991426174E603C00741B6D /* SettingConditions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAF8172D9CAB00A43CF7 /* SettingConditions.cpp */; };
E4991427174E603C00741B6D /* SettingControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFA172D9CAB00A43CF7 /* SettingControl.cpp */; };
- E4991428174E603C00741B6D /* SettingDependency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFC172D9CAB00A43CF7 /* SettingDependency.cpp */; };
E4991429174E603C00741B6D /* SettingPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFAFE172D9CAB00A43CF7 /* SettingPath.cpp */; };
E499142A174E603C00741B6D /* Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B7C38E129420E5009E7A26 /* Settings.cpp */; };
- E499142B174E603C00741B6D /* SettingSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB00172D9CAB00A43CF7 /* SettingSection.cpp */; };
- E499142C174E603C00741B6D /* SettingsManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB02172D9CAB00A43CF7 /* SettingsManager.cpp */; };
- E499142D174E603C00741B6D /* SettingUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFECFB03172D9CAB00A43CF7 /* SettingUpdate.cpp */; };
E499142F174E603C00741B6D /* SkinSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF89901A1709BB2D00B35C21 /* SkinSettings.cpp */; };
E4991430174E603C00741B6D /* VideoSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E1E010D25F9FD00618676 /* VideoSettings.cpp */; };
E4991431174E604300741B6D /* DarwinStorageProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F599CD73108E6A7A0010EC2A /* DarwinStorageProvider.cpp */; };
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
- 0E30286C1759FCC200D93596 /* SettingsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsManager.h; sourceTree = "<group>"; };
0E3036EA1760F68A00D93596 /* FavouritesDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FavouritesDirectory.cpp; sourceTree = "<group>"; };
0E3036EB1760F68A00D93596 /* FavouritesDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FavouritesDirectory.h; sourceTree = "<group>"; };
180F6C7F17CE9A5700127892 /* smc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = smc.h; sourceTree = "<group>"; };
5558ED0F176396CD00118C35 /* StereoscopicsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StereoscopicsManager.h; sourceTree = "<group>"; };
55611BA21766672F00754072 /* RenderFlags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFlags.cpp; sourceTree = "<group>"; };
55611BA41766679200754072 /* RenderFlags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderFlags.h; sourceTree = "<group>"; };
+ 55D3604C1826CAB900DA66D2 /* OverlayRendererGUI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OverlayRendererGUI.cpp; sourceTree = "<group>"; };
+ 55D3604D1826CAB900DA66D2 /* OverlayRendererGUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OverlayRendererGUI.h; sourceTree = "<group>"; };
6E2FACD20E26E92800DF79EA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6E97BDBF0DA2B620003A2A89 /* EventClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventClient.h; sourceTree = "<group>"; };
6E97BDC00DA2B620003A2A89 /* EventPacket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventPacket.h; sourceTree = "<group>"; };
6E97BDC40DA2B620003A2A89 /* Socket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Socket.h; sourceTree = "<group>"; };
7C0B98A1154B79C30065A238 /* AEDeviceInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AEDeviceInfo.cpp; sourceTree = "<group>"; };
7C0B98A2154B79C30065A238 /* AEDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AEDeviceInfo.h; sourceTree = "<group>"; };
+ 7C14096F183224B8009F9411 /* ISetting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ISetting.cpp; path = lib/ISetting.cpp; sourceTree = "<group>"; };
+ 7C140970183224B8009F9411 /* ISetting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ISetting.h; path = lib/ISetting.h; sourceTree = "<group>"; };
+ 7C140971183224B8009F9411 /* ISettingCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ISettingCallback.h; path = lib/ISettingCallback.h; sourceTree = "<group>"; };
+ 7C140972183224B8009F9411 /* ISettingControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ISettingControl.cpp; path = lib/ISettingControl.cpp; sourceTree = "<group>"; };
+ 7C140973183224B8009F9411 /* ISettingControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ISettingControl.h; path = lib/ISettingControl.h; sourceTree = "<group>"; };
+ 7C140974183224B8009F9411 /* ISettingControlCreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ISettingControlCreator.h; path = lib/ISettingControlCreator.h; sourceTree = "<group>"; };
+ 7C140975183224B8009F9411 /* ISettingCreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ISettingCreator.h; path = lib/ISettingCreator.h; sourceTree = "<group>"; };
+ 7C140976183224B8009F9411 /* ISettingsHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ISettingsHandler.h; path = lib/ISettingsHandler.h; sourceTree = "<group>"; };
+ 7C140977183224B8009F9411 /* ISubSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ISubSettings.h; path = lib/ISubSettings.h; sourceTree = "<group>"; };
+ 7C140978183224B8009F9411 /* Setting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Setting.cpp; path = lib/Setting.cpp; sourceTree = "<group>"; };
+ 7C140979183224B8009F9411 /* Setting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Setting.h; path = lib/Setting.h; sourceTree = "<group>"; };
+ 7C14097A183224B8009F9411 /* SettingCategoryAccess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SettingCategoryAccess.cpp; path = lib/SettingCategoryAccess.cpp; sourceTree = "<group>"; };
+ 7C14097B183224B8009F9411 /* SettingCategoryAccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingCategoryAccess.h; path = lib/SettingCategoryAccess.h; sourceTree = "<group>"; };
+ 7C14097C183224B8009F9411 /* SettingConditions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SettingConditions.cpp; path = lib/SettingConditions.cpp; sourceTree = "<group>"; };
+ 7C14097D183224B8009F9411 /* SettingConditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingConditions.h; path = lib/SettingConditions.h; sourceTree = "<group>"; };
+ 7C14097E183224B8009F9411 /* SettingDefinitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingDefinitions.h; path = lib/SettingDefinitions.h; sourceTree = "<group>"; };
+ 7C14097F183224B8009F9411 /* SettingDependency.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SettingDependency.cpp; path = lib/SettingDependency.cpp; sourceTree = "<group>"; };
+ 7C140980183224B8009F9411 /* SettingDependency.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingDependency.h; path = lib/SettingDependency.h; sourceTree = "<group>"; };
+ 7C140981183224B8009F9411 /* SettingRequirement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SettingRequirement.cpp; path = lib/SettingRequirement.cpp; sourceTree = "<group>"; };
+ 7C140982183224B8009F9411 /* SettingRequirement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingRequirement.h; path = lib/SettingRequirement.h; sourceTree = "<group>"; };
+ 7C140983183224B8009F9411 /* SettingSection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SettingSection.cpp; path = lib/SettingSection.cpp; sourceTree = "<group>"; };
+ 7C140984183224B8009F9411 /* SettingSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingSection.h; path = lib/SettingSection.h; sourceTree = "<group>"; };
+ 7C140985183224B8009F9411 /* SettingsManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SettingsManager.cpp; path = lib/SettingsManager.cpp; sourceTree = "<group>"; };
+ 7C140986183224B8009F9411 /* SettingsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingsManager.h; path = lib/SettingsManager.h; sourceTree = "<group>"; };
+ 7C140987183224B8009F9411 /* SettingUpdate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SettingUpdate.cpp; path = lib/SettingUpdate.cpp; sourceTree = "<group>"; };
+ 7C140988183224B8009F9411 /* SettingUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingUpdate.h; path = lib/SettingUpdate.h; sourceTree = "<group>"; };
7C1A492115A962EE004AF4A4 /* SeekHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SeekHandler.cpp; sourceTree = "<group>"; };
7C1A492215A962EE004AF4A4 /* SeekHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SeekHandler.h; sourceTree = "<group>"; };
7C1A495B15A96918004AF4A4 /* SaveFileStateJob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SaveFileStateJob.h; sourceTree = "<group>"; };
7C1D682815A7D2FD00658B65 /* DatabaseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseManager.h; sourceTree = "<group>"; };
7C1F6EB913ECCFA7001726AB /* LibraryDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LibraryDirectory.cpp; sourceTree = "<group>"; };
7C1F6EBA13ECCFA7001726AB /* LibraryDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LibraryDirectory.h; sourceTree = "<group>"; };
+ 7C26126A182068660086E04D /* SettingsOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingsOperations.cpp; sourceTree = "<group>"; };
+ 7C26126B182068660086E04D /* SettingsOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsOperations.h; sourceTree = "<group>"; };
7C26126F1825B6340086E04D /* DatabaseQuery.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseQuery.cpp; sourceTree = "<group>"; };
7C2612701825B6340086E04D /* DatabaseQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseQuery.h; sourceTree = "<group>"; };
- 7C2612631820667C0086E04D /* ISettingControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ISettingControl.cpp; sourceTree = "<group>"; };
- 7C2612641820667C0086E04D /* ISettingControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISettingControl.h; sourceTree = "<group>"; };
- 7C2612651820667C0086E04D /* ISettingControlCreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISettingControlCreator.h; sourceTree = "<group>"; };
- 7C2612661820667C0086E04D /* SettingDefinitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingDefinitions.h; sourceTree = "<group>"; };
7C2D6AE20F35453E00DD2E85 /* SpecialProtocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpecialProtocol.cpp; sourceTree = "<group>"; };
7C2D6AE30F35453E00DD2E85 /* SpecialProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpecialProtocol.h; sourceTree = "<group>"; };
7C4458BB161E203800A905F6 /* Screenshot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Screenshot.cpp; sourceTree = "<group>"; };
7C45DBE810F325C400D4BBF3 /* DAVDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DAVDirectory.h; sourceTree = "<group>"; };
7C4705AC12EF584C00369E51 /* AddonInstaller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AddonInstaller.cpp; sourceTree = "<group>"; };
7C4705AD12EF584C00369E51 /* AddonInstaller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddonInstaller.h; sourceTree = "<group>"; };
+ 7C4E6F701829AA9700F1068F /* GUIDialogSubtitles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIDialogSubtitles.cpp; sourceTree = "<group>"; };
+ 7C4E6F711829AA9700F1068F /* GUIDialogSubtitles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIDialogSubtitles.h; sourceTree = "<group>"; };
7C5608C40F1754930056433A /* ExternalPlayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExternalPlayer.cpp; sourceTree = "<group>"; };
7C5608C50F1754930056433A /* ExternalPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExternalPlayer.h; sourceTree = "<group>"; };
7C62F24010505BC7002AD2C1 /* Bookmark.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Bookmark.cpp; sourceTree = "<group>"; };
7C779E51104A58F900F444C4 /* GUIWindowTestPatternGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIWindowTestPatternGL.h; sourceTree = "<group>"; };
7C7B2B2E1134F36400713D6D /* mysqldataset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mysqldataset.cpp; sourceTree = "<group>"; };
7C7B2B2F1134F36400713D6D /* mysqldataset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mysqldataset.h; sourceTree = "<group>"; };
+ 7C7BCDBF17727951004842FB /* IListProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IListProvider.cpp; path = xbmc/listproviders/IListProvider.cpp; sourceTree = SOURCE_ROOT; };
+ 7C7BCDC217727951004842FB /* StaticProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StaticProvider.h; path = xbmc/listproviders/StaticProvider.h; sourceTree = SOURCE_ROOT; };
+ 7C7BCDC317727951004842FB /* StaticProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StaticProvider.cpp; path = xbmc/listproviders/StaticProvider.cpp; sourceTree = SOURCE_ROOT; };
+ 7C7BCDC417727951004842FB /* IListProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IListProvider.h; path = xbmc/listproviders/IListProvider.h; sourceTree = SOURCE_ROOT; };
7C7CEAEF165629530059C9EB /* AELimiter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AELimiter.cpp; sourceTree = "<group>"; };
7C7CEAF0165629530059C9EB /* AELimiter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AELimiter.h; sourceTree = "<group>"; };
7C84A59C12FA3C1600CD1714 /* SourcesDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SourcesDirectory.cpp; path = xbmc/filesystem/SourcesDirectory.cpp; sourceTree = SOURCE_ROOT; };
7C8A14551154CB2600E5FCFA /* TextureCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureCache.h; sourceTree = "<group>"; };
7C8A187A115B2A8200E5FCFA /* TextureDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureDatabase.cpp; sourceTree = "<group>"; };
7C8A187B115B2A8200E5FCFA /* TextureDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureDatabase.h; sourceTree = "<group>"; };
+ 7C8FC6EC1829A4580045153D /* DirectoryProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DirectoryProvider.cpp; path = xbmc/listproviders/DirectoryProvider.cpp; sourceTree = SOURCE_ROOT; };
+ 7C8FC6ED1829A4580045153D /* DirectoryProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryProvider.h; path = xbmc/listproviders/DirectoryProvider.h; sourceTree = SOURCE_ROOT; };
7C920CF7181669FF00DA1477 /* TextureOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureOperations.cpp; sourceTree = "<group>"; };
7C920CF8181669FF00DA1477 /* TextureOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureOperations.h; sourceTree = "<group>"; };
7C99B6A2133D342100FC2B16 /* CircularCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CircularCache.cpp; sourceTree = "<group>"; };
88ACB01D0DCF409E0083CFDF /* ASAPCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASAPCodec.h; sourceTree = "<group>"; };
88ACB01E0DCF409E0083CFDF /* DllASAP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DllASAP.h; sourceTree = "<group>"; };
88ECB6580DE013C4003396A7 /* DiskArbitration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiskArbitration.framework; path = /System/Library/Frameworks/DiskArbitration.framework; sourceTree = "<absolute>"; };
- 8DD76F7E0486A8DE00D96B5E /* XBMC */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = XBMC; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8DD76F7E0486A8DE00D96B5E /* XBMC */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = XBMC; sourceTree = BUILT_PRODUCTS_DIR; };
AE84CB5915A5B8A600A3810E /* TagLibVFSStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TagLibVFSStream.cpp; sourceTree = "<group>"; };
AE84CB5C15A5B8BA00A3810E /* TagLibVFSStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagLibVFSStream.h; sourceTree = "<group>"; };
AE89ACA41621DAB800E17DBC /* DVDDemuxBXA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DVDDemuxBXA.cpp; sourceTree = "<group>"; };
DF28EDA0170E1A11005FA9D2 /* GUIWindowSettingsProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIWindowSettingsProfile.h; sourceTree = "<group>"; };
DF28EE01170E1E51005FA9D2 /* DisplaySettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DisplaySettings.cpp; sourceTree = "<group>"; };
DF28EE02170E1E51005FA9D2 /* DisplaySettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DisplaySettings.h; sourceTree = "<group>"; };
- DF29667E17B2B04300DF10F9 /* SettingRequirement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingRequirement.cpp; sourceTree = "<group>"; };
- DF29667F17B2B04300DF10F9 /* SettingRequirement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingRequirement.h; sourceTree = "<group>"; };
DF3488E513FD958F0026A711 /* GUIAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIAction.cpp; sourceTree = "<group>"; };
DF3488E613FD958F0026A711 /* GUIAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIAction.h; sourceTree = "<group>"; };
DF34892813FD9C780026A711 /* AirPlayServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AirPlayServer.cpp; sourceTree = "<group>"; };
DF830D0E15BB262700602BE6 /* GUIKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIKeyboard.h; sourceTree = "<group>"; };
DF830D0F15BB262700602BE6 /* GUIKeyboardFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIKeyboardFactory.cpp; sourceTree = "<group>"; };
DF830D1015BB262700602BE6 /* GUIKeyboardFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIKeyboardFactory.h; sourceTree = "<group>"; };
- DF8990141709BB2D00B35C21 /* ISettingsHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISettingsHandler.h; sourceTree = "<group>"; };
- DF8990151709BB2D00B35C21 /* ISubSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISubSettings.h; sourceTree = "<group>"; };
DF8990161709BB2D00B35C21 /* MediaSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSettings.cpp; sourceTree = "<group>"; };
DF8990171709BB2D00B35C21 /* MediaSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSettings.h; sourceTree = "<group>"; };
DF8990181709BB2D00B35C21 /* MediaSourceSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSourceSettings.cpp; sourceTree = "<group>"; };
DFE4095A17417FDF00473BD9 /* LegacyPathTranslation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyPathTranslation.h; sourceTree = "<group>"; };
DFECFADD172D9C5100A43CF7 /* GUIControlSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GUIControlSettings.cpp; path = windows/GUIControlSettings.cpp; sourceTree = "<group>"; };
DFECFADE172D9C5100A43CF7 /* GUIControlSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GUIControlSettings.h; path = windows/GUIControlSettings.h; sourceTree = "<group>"; };
- DFECFAEE172D9CAB00A43CF7 /* ISetting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ISetting.cpp; sourceTree = "<group>"; };
- DFECFAEF172D9CAB00A43CF7 /* ISetting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISetting.h; sourceTree = "<group>"; };
- DFECFAF0172D9CAB00A43CF7 /* ISettingCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISettingCallback.h; sourceTree = "<group>"; };
- DFECFAF1172D9CAB00A43CF7 /* ISettingCreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISettingCreator.h; sourceTree = "<group>"; };
- DFECFAF2172D9CAB00A43CF7 /* Setting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Setting.cpp; sourceTree = "<group>"; };
- DFECFAF3172D9CAB00A43CF7 /* Setting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Setting.h; sourceTree = "<group>"; };
DFECFAF4172D9CAB00A43CF7 /* SettingAddon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingAddon.cpp; sourceTree = "<group>"; };
DFECFAF5172D9CAB00A43CF7 /* SettingAddon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingAddon.h; sourceTree = "<group>"; };
- DFECFAF6172D9CAB00A43CF7 /* SettingCategoryAccess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingCategoryAccess.cpp; sourceTree = "<group>"; };
- DFECFAF7172D9CAB00A43CF7 /* SettingCategoryAccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingCategoryAccess.h; sourceTree = "<group>"; };
- DFECFAF8172D9CAB00A43CF7 /* SettingConditions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingConditions.cpp; sourceTree = "<group>"; };
- DFECFAF9172D9CAB00A43CF7 /* SettingConditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingConditions.h; sourceTree = "<group>"; };
DFECFAFA172D9CAB00A43CF7 /* SettingControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingControl.cpp; sourceTree = "<group>"; };
DFECFAFB172D9CAB00A43CF7 /* SettingControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingControl.h; sourceTree = "<group>"; };
- DFECFAFC172D9CAB00A43CF7 /* SettingDependency.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingDependency.cpp; sourceTree = "<group>"; };
- DFECFAFD172D9CAB00A43CF7 /* SettingDependency.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingDependency.h; sourceTree = "<group>"; };
DFECFAFE172D9CAB00A43CF7 /* SettingPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingPath.cpp; sourceTree = "<group>"; };
DFECFAFF172D9CAB00A43CF7 /* SettingPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingPath.h; sourceTree = "<group>"; };
- DFECFB00172D9CAB00A43CF7 /* SettingSection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingSection.cpp; sourceTree = "<group>"; };
- DFECFB01172D9CAB00A43CF7 /* SettingSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingSection.h; sourceTree = "<group>"; };
- DFECFB02172D9CAB00A43CF7 /* SettingsManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingsManager.cpp; sourceTree = "<group>"; };
- DFECFB03172D9CAB00A43CF7 /* SettingUpdate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingUpdate.cpp; sourceTree = "<group>"; };
- DFECFB04172D9CAB00A43CF7 /* SettingUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingUpdate.h; sourceTree = "<group>"; };
DFECFB1A172D9D0100A43CF7 /* BooleanLogic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BooleanLogic.cpp; sourceTree = "<group>"; };
DFECFB1B172D9D0100A43CF7 /* BooleanLogic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BooleanLogic.h; sourceTree = "<group>"; };
DFECFB4A172D9D6D00A43CF7 /* NetworkServices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkServices.cpp; sourceTree = "<group>"; };
E38E157F0D25F9FA00618676 /* DVDOverlayContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVDOverlayContainer.h; sourceTree = "<group>"; };
E38E15800D25F9FA00618676 /* DVDOverlayRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DVDOverlayRenderer.cpp; sourceTree = "<group>"; };
E38E15810D25F9FA00618676 /* DVDOverlayRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVDOverlayRenderer.h; sourceTree = "<group>"; };
- E38E15820D25F9FA00618676 /* DVDPerformanceCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DVDPerformanceCounter.cpp; sourceTree = "<group>"; };
- E38E15830D25F9FA00618676 /* DVDPerformanceCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVDPerformanceCounter.h; sourceTree = "<group>"; };
E38E15840D25F9FA00618676 /* DVDPlayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DVDPlayer.cpp; sourceTree = "<group>"; };
E38E15850D25F9FA00618676 /* DVDPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVDPlayer.h; sourceTree = "<group>"; };
E38E15860D25F9FA00618676 /* DVDPlayerAudio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DVDPlayerAudio.cpp; sourceTree = "<group>"; };
E38E17AB0D25F9FA00618676 /* GUIDialogFileStacking.h */,
886328150E07B37200BB3DAB /* GUIDialogFullScreenInfo.cpp */,
886328160E07B37200BB3DAB /* GUIDialogFullScreenInfo.h */,
+ 7C4E6F701829AA9700F1068F /* GUIDialogSubtitles.cpp */,
+ 7C4E6F711829AA9700F1068F /* GUIDialogSubtitles.h */,
F5E55B65107412DE006E788A /* GUIDialogTeletext.cpp */,
F5E55B64107412DE006E788A /* GUIDialogTeletext.h */,
E38E17E00D25F9FA00618676 /* GUIDialogVideoBookmarks.cpp */,
name = main;
sourceTree = "<group>";
};
+ 7C14096E18322476009F9411 /* lib */ = {
+ isa = PBXGroup;
+ children = (
+ 7C14096F183224B8009F9411 /* ISetting.cpp */,
+ 7C140970183224B8009F9411 /* ISetting.h */,
+ 7C140971183224B8009F9411 /* ISettingCallback.h */,
+ 7C140972183224B8009F9411 /* ISettingControl.cpp */,
+ 7C140973183224B8009F9411 /* ISettingControl.h */,
+ 7C140974183224B8009F9411 /* ISettingControlCreator.h */,
+ 7C140975183224B8009F9411 /* ISettingCreator.h */,
+ 7C140976183224B8009F9411 /* ISettingsHandler.h */,
+ 7C140977183224B8009F9411 /* ISubSettings.h */,
+ 7C140978183224B8009F9411 /* Setting.cpp */,
+ 7C140979183224B8009F9411 /* Setting.h */,
+ 7C14097A183224B8009F9411 /* SettingCategoryAccess.cpp */,
+ 7C14097B183224B8009F9411 /* SettingCategoryAccess.h */,
+ 7C14097C183224B8009F9411 /* SettingConditions.cpp */,
+ 7C14097D183224B8009F9411 /* SettingConditions.h */,
+ 7C14097E183224B8009F9411 /* SettingDefinitions.h */,
+ 7C14097F183224B8009F9411 /* SettingDependency.cpp */,
+ 7C140980183224B8009F9411 /* SettingDependency.h */,
+ 7C140981183224B8009F9411 /* SettingRequirement.cpp */,
+ 7C140982183224B8009F9411 /* SettingRequirement.h */,
+ 7C140983183224B8009F9411 /* SettingSection.cpp */,
+ 7C140984183224B8009F9411 /* SettingSection.h */,
+ 7C140985183224B8009F9411 /* SettingsManager.cpp */,
+ 7C140986183224B8009F9411 /* SettingsManager.h */,
+ 7C140987183224B8009F9411 /* SettingUpdate.cpp */,
+ 7C140988183224B8009F9411 /* SettingUpdate.h */,
+ );
+ name = lib;
+ sourceTree = "<group>";
+ };
+ 7C430161175C41FE009B82E5 /* listproviders */ = {
+ isa = PBXGroup;
+ children = (
+ 7C8FC6EC1829A4580045153D /* DirectoryProvider.cpp */,
+ 7C8FC6ED1829A4580045153D /* DirectoryProvider.h */,
+ 7C7BCDBF17727951004842FB /* IListProvider.cpp */,
+ 7C7BCDC417727951004842FB /* IListProvider.h */,
+ 7C7BCDC317727951004842FB /* StaticProvider.cpp */,
+ 7C7BCDC217727951004842FB /* StaticProvider.h */,
+ );
+ name = listproviders;
+ path = linux;
+ sourceTree = "<group>";
+ };
7C5608C30F1754930056433A /* ExternalPlayer */ = {
isa = PBXGroup;
children = (
18B7C8C61294252E009E7A26 /* input */,
4367217312D6640E002508E6 /* interfaces */,
E38E1D690D25F9FD00618676 /* linux */,
+ 7C430161175C41FE009B82E5 /* listproviders */,
552A226615F7E11B0015C0D0 /* main */,
18B7C853129423A7009E7A26 /* music */,
431376F212D6449100680C15 /* network */,
E38E157F0D25F9FA00618676 /* DVDOverlayContainer.h */,
E38E15800D25F9FA00618676 /* DVDOverlayRenderer.cpp */,
E38E15810D25F9FA00618676 /* DVDOverlayRenderer.h */,
- E38E15820D25F9FA00618676 /* DVDPerformanceCounter.cpp */,
- E38E15830D25F9FA00618676 /* DVDPerformanceCounter.h */,
E38E15840D25F9FA00618676 /* DVDPlayer.cpp */,
E38E15850D25F9FA00618676 /* DVDPlayer.h */,
E38E15860D25F9FA00618676 /* DVDPlayerAudio.cpp */,
F5D8D730102BB3B1004A11AB /* OverlayRenderer.h */,
F5D8D72F102BB3B1004A11AB /* OverlayRendererGL.cpp */,
F5D8D72E102BB3B1004A11AB /* OverlayRendererGL.h */,
+ 55D3604C1826CAB900DA66D2 /* OverlayRendererGUI.cpp */,
+ 55D3604D1826CAB900DA66D2 /* OverlayRendererGUI.h */,
431AE5D7109C1A63007428C3 /* OverlayRendererUtil.cpp */,
431AE5D8109C1A63007428C3 /* OverlayRendererUtil.h */,
F56579AD13060D1E0085ED7F /* RenderCapture.cpp */,
E38E1E000D25F9FD00618676 /* settings */ = {
isa = PBXGroup;
children = (
+ 7C14096E18322476009F9411 /* lib */,
F563529F16E53FE900D21BAD /* dialogs */,
F56352A016E53FF300D21BAD /* windows */,
18B7C3A612942132009E7A26 /* AdvancedSettings.cpp */,
18B7C3A712942132009E7A26 /* AdvancedSettings.h */,
DF28EE01170E1E51005FA9D2 /* DisplaySettings.cpp */,
DF28EE02170E1E51005FA9D2 /* DisplaySettings.h */,
- DFECFAEE172D9CAB00A43CF7 /* ISetting.cpp */,
- DFECFAEF172D9CAB00A43CF7 /* ISetting.h */,
- DFECFAF0172D9CAB00A43CF7 /* ISettingCallback.h */,
- 7C2612631820667C0086E04D /* ISettingControl.cpp */,
- 7C2612641820667C0086E04D /* ISettingControl.h */,
- 7C2612651820667C0086E04D /* ISettingControlCreator.h */,
- DFECFAF1172D9CAB00A43CF7 /* ISettingCreator.h */,
- DF8990141709BB2D00B35C21 /* ISettingsHandler.h */,
- DF8990151709BB2D00B35C21 /* ISubSettings.h */,
DF8990161709BB2D00B35C21 /* MediaSettings.cpp */,
DF8990171709BB2D00B35C21 /* MediaSettings.h */,
DF8990181709BB2D00B35C21 /* MediaSourceSettings.cpp */,
DF8990191709BB2D00B35C21 /* MediaSourceSettings.h */,
- DFECFAF2172D9CAB00A43CF7 /* Setting.cpp */,
- DFECFAF3172D9CAB00A43CF7 /* Setting.h */,
DFECFAF4172D9CAB00A43CF7 /* SettingAddon.cpp */,
DFECFAF5172D9CAB00A43CF7 /* SettingAddon.h */,
- DFECFAF6172D9CAB00A43CF7 /* SettingCategoryAccess.cpp */,
- DFECFAF7172D9CAB00A43CF7 /* SettingCategoryAccess.h */,
- DFECFAF8172D9CAB00A43CF7 /* SettingConditions.cpp */,
- DFECFAF9172D9CAB00A43CF7 /* SettingConditions.h */,
DFECFAFA172D9CAB00A43CF7 /* SettingControl.cpp */,
DFECFAFB172D9CAB00A43CF7 /* SettingControl.h */,
- 7C2612661820667C0086E04D /* SettingDefinitions.h */,
- DFECFAFC172D9CAB00A43CF7 /* SettingDependency.cpp */,
- DFECFAFD172D9CAB00A43CF7 /* SettingDependency.h */,
DFECFAFE172D9CAB00A43CF7 /* SettingPath.cpp */,
DFECFAFF172D9CAB00A43CF7 /* SettingPath.h */,
- DF29667E17B2B04300DF10F9 /* SettingRequirement.cpp */,
- DF29667F17B2B04300DF10F9 /* SettingRequirement.h */,
18B7C38E129420E5009E7A26 /* Settings.cpp */,
18B7C38F129420E5009E7A26 /* Settings.h */,
- DFECFB00172D9CAB00A43CF7 /* SettingSection.cpp */,
- DFECFB01172D9CAB00A43CF7 /* SettingSection.h */,
- DFECFB02172D9CAB00A43CF7 /* SettingsManager.cpp */,
- 0E30286C1759FCC200D93596 /* SettingsManager.h */,
- DFECFB03172D9CAB00A43CF7 /* SettingUpdate.cpp */,
- DFECFB04172D9CAB00A43CF7 /* SettingUpdate.h */,
DF89901A1709BB2D00B35C21 /* SkinSettings.cpp */,
DF89901B1709BB2D00B35C21 /* SkinSettings.h */,
E38E1E010D25F9FD00618676 /* VideoSettings.cpp */,
DF28DF4C17B8379E0077F41A /* ProfilesOperations.h */,
DF00492B162DAEA200A971AD /* PVROperations.cpp */,
DF00492C162DAEA200A971AD /* PVROperations.h */,
+ 7C26126A182068660086E04D /* SettingsOperations.cpp */,
+ 7C26126B182068660086E04D /* SettingsOperations.h */,
F5AE409613415D9E0004BD79 /* SystemOperations.cpp */,
F5AE409713415D9E0004BD79 /* SystemOperations.h */,
7C920CF7181669FF00DA1477 /* TextureOperations.cpp */,
E38E1FA30D25F9FD00618676 /* DVDMessageTracker.cpp in Sources */,
E38E1FA40D25F9FD00618676 /* DVDOverlayContainer.cpp in Sources */,
E38E1FA50D25F9FD00618676 /* DVDOverlayRenderer.cpp in Sources */,
- E38E1FA60D25F9FD00618676 /* DVDPerformanceCounter.cpp in Sources */,
E38E1FA70D25F9FD00618676 /* DVDPlayer.cpp in Sources */,
E38E1FA80D25F9FD00618676 /* DVDPlayerAudio.cpp in Sources */,
E38E1FA90D25F9FD00618676 /* DVDPlayerSubtitle.cpp in Sources */,
43BF09171080C6BA00E25290 /* NptResults.cpp in Sources */,
43BF09181080C6BA00E25290 /* NptRingBuffer.cpp in Sources */,
43BF09191080C6BA00E25290 /* NptSimpleMessageQueue.cpp in Sources */,
+ 55D3604E1826CAB900DA66D2 /* OverlayRendererGUI.cpp in Sources */,
43BF091A1080C6BA00E25290 /* NptSockets.cpp in Sources */,
43BF091B1080C6BA00E25290 /* NptStreams.cpp in Sources */,
43BF091C1080C6BA00E25290 /* NptStrings.cpp in Sources */,
F52CC5F01713AAA200113454 /* DirectoryNodeGrouped.cpp in Sources */,
F52CC6AA1713BD2B00113454 /* DirectoryNodeGrouped.cpp in Sources */,
DFECFADF172D9C5100A43CF7 /* GUIControlSettings.cpp in Sources */,
- DFECFB07172D9CAB00A43CF7 /* ISetting.cpp in Sources */,
- DFECFB08172D9CAB00A43CF7 /* Setting.cpp in Sources */,
DFECFB09172D9CAB00A43CF7 /* SettingAddon.cpp in Sources */,
- DFECFB0A172D9CAB00A43CF7 /* SettingCategoryAccess.cpp in Sources */,
- DFECFB0B172D9CAB00A43CF7 /* SettingConditions.cpp in Sources */,
DFECFB0C172D9CAB00A43CF7 /* SettingControl.cpp in Sources */,
- DFECFB0D172D9CAB00A43CF7 /* SettingDependency.cpp in Sources */,
DFECFB0E172D9CAB00A43CF7 /* SettingPath.cpp in Sources */,
- DFECFB0F172D9CAB00A43CF7 /* SettingSection.cpp in Sources */,
- DFECFB10172D9CAB00A43CF7 /* SettingsManager.cpp in Sources */,
- DFECFB11172D9CAB00A43CF7 /* SettingUpdate.cpp in Sources */,
DFECFB1C172D9D0100A43CF7 /* BooleanLogic.cpp in Sources */,
DFECFB4C172D9D6D00A43CF7 /* NetworkServices.cpp in Sources */,
F5DB700217322DBB00D4DF21 /* FavouritesOperations.cpp in Sources */,
55611BA31766672F00754072 /* RenderFlags.cpp in Sources */,
5558ED10176396CD00118C35 /* StereoscopicsManager.cpp in Sources */,
F59EED7E17AD5174005BB7C6 /* ApplicationPlayer.cpp in Sources */,
- DF29668017B2B04300DF10F9 /* SettingRequirement.cpp in Sources */,
DF28DF4D17B8379E0077F41A /* ProfilesOperations.cpp in Sources */,
180F6C8117CE9A5700127892 /* smc.c in Sources */,
DFD882F817DD1A5B001516FE /* AddonPythonInvoker.cpp in Sources */,
7C920CF9181669FF00DA1477 /* TextureOperations.cpp in Sources */,
DFEF0BAC180ADE6400AEAED1 /* FileItemListModification.cpp in Sources */,
DFEF0BC1180ADEDA00AEAED1 /* SmartPlaylistFileItemListModifier.cpp in Sources */,
- 7C2612671820667C0086E04D /* ISettingControl.cpp in Sources */,
7CC82C9318284F9F0010DF30 /* CharsetDetection.cpp in Sources */,
+ 7C26126C182068660086E04D /* SettingsOperations.cpp in Sources */,
+ 7C7BCDC517727951004842FB /* IListProvider.cpp in Sources */,
+ 7C7BCDC717727951004842FB /* StaticProvider.cpp in Sources */,
+ 7C8FC6EE1829A4580045153D /* DirectoryProvider.cpp in Sources */,
+ 7C4E6F721829AA9700F1068F /* GUIDialogSubtitles.cpp in Sources */,
+ 7C140989183224B8009F9411 /* ISetting.cpp in Sources */,
+ 7C14098C183224B8009F9411 /* ISettingControl.cpp in Sources */,
+ 7C14098F183224B8009F9411 /* Setting.cpp in Sources */,
+ 7C140992183224B8009F9411 /* SettingCategoryAccess.cpp in Sources */,
+ 7C140995183224B8009F9411 /* SettingConditions.cpp in Sources */,
+ 7C140998183224B8009F9411 /* SettingDependency.cpp in Sources */,
+ 7C14099B183224B8009F9411 /* SettingRequirement.cpp in Sources */,
+ 7C14099E183224B8009F9411 /* SettingSection.cpp in Sources */,
+ 7C1409A1183224B8009F9411 /* SettingsManager.cpp in Sources */,
+ 7C1409A4183224B8009F9411 /* SettingUpdate.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
DFF0F19317528350002DA3A4 /* DVDMessageTracker.cpp in Sources */,
DFF0F19417528350002DA3A4 /* DVDOverlayContainer.cpp in Sources */,
DFF0F19517528350002DA3A4 /* DVDOverlayRenderer.cpp in Sources */,
- DFF0F19617528350002DA3A4 /* DVDPerformanceCounter.cpp in Sources */,
DFF0F19717528350002DA3A4 /* DVDPlayer.cpp in Sources */,
DFF0F19817528350002DA3A4 /* DVDPlayerAudio.cpp in Sources */,
DFF0F19917528350002DA3A4 /* DVDPlayerSubtitle.cpp in Sources */,
DFF0F39917528350002DA3A4 /* GUIWindowTestPattern.cpp in Sources */,
DFF0F39A17528350002DA3A4 /* AdvancedSettings.cpp in Sources */,
DFF0F39B17528350002DA3A4 /* DisplaySettings.cpp in Sources */,
- DFF0F39C17528350002DA3A4 /* ISetting.cpp in Sources */,
DFF0F39D17528350002DA3A4 /* MediaSettings.cpp in Sources */,
DFF0F39E17528350002DA3A4 /* MediaSourceSettings.cpp in Sources */,
- DFF0F39F17528350002DA3A4 /* Setting.cpp in Sources */,
DFF0F3A017528350002DA3A4 /* SettingAddon.cpp in Sources */,
- DFF0F3A117528350002DA3A4 /* SettingCategoryAccess.cpp in Sources */,
- DFF0F3A217528350002DA3A4 /* SettingConditions.cpp in Sources */,
DFF0F3A317528350002DA3A4 /* SettingControl.cpp in Sources */,
- DFF0F3A417528350002DA3A4 /* SettingDependency.cpp in Sources */,
DFF0F3A517528350002DA3A4 /* SettingPath.cpp in Sources */,
DFF0F3A617528350002DA3A4 /* Settings.cpp in Sources */,
- DFF0F3A717528350002DA3A4 /* SettingSection.cpp in Sources */,
- DFF0F3A817528350002DA3A4 /* SettingsManager.cpp in Sources */,
- DFF0F3A917528350002DA3A4 /* SettingUpdate.cpp in Sources */,
DFF0F3AB17528350002DA3A4 /* SkinSettings.cpp in Sources */,
DFF0F3AC17528350002DA3A4 /* VideoSettings.cpp in Sources */,
DFF0F3AD17528350002DA3A4 /* DarwinStorageProvider.cpp in Sources */,
F55BA70C17AB2265002A36D1 /* StereoscopicsManager.cpp in Sources */,
F55BA71117AB2293002A36D1 /* RenderFlags.cpp in Sources */,
F59EED8017AD5174005BB7C6 /* ApplicationPlayer.cpp in Sources */,
- DF29668217B2B04300DF10F9 /* SettingRequirement.cpp in Sources */,
DF28DF4F17B8379E0077F41A /* ProfilesOperations.cpp in Sources */,
DFD882F617DD1A5B001516FE /* AddonPythonInvoker.cpp in Sources */,
DFD882E717DD189E001516FE /* StringValidation.cpp in Sources */,
7C920CFB181669FF00DA1477 /* TextureOperations.cpp in Sources */,
DFEF0BAE180ADE6400AEAED1 /* FileItemListModification.cpp in Sources */,
DFEF0BC3180ADEDA00AEAED1 /* SmartPlaylistFileItemListModifier.cpp in Sources */,
- 7C2612691820667C0086E04D /* ISettingControl.cpp in Sources */,
7CC82C9518284F9F0010DF30 /* CharsetDetection.cpp in Sources */,
+ DF6D1DFF18312525009DB64F /* OverlayRendererGUI.cpp in Sources */,
+ 7C26126E182068660086E04D /* SettingsOperations.cpp in Sources */,
+ 7C7BCDCB17727951004842FB /* IListProvider.cpp in Sources */,
+ 7C7BCDCD17727952004842FB /* StaticProvider.cpp in Sources */,
+ 7C8FC6F01829A4580045153D /* DirectoryProvider.cpp in Sources */,
+ 7C4E6F741829AA9700F1068F /* GUIDialogSubtitles.cpp in Sources */,
+ 7C14098B183224B8009F9411 /* ISetting.cpp in Sources */,
+ 7C14098E183224B8009F9411 /* ISettingControl.cpp in Sources */,
+ 7C140991183224B8009F9411 /* Setting.cpp in Sources */,
+ 7C140994183224B8009F9411 /* SettingCategoryAccess.cpp in Sources */,
+ 7C140997183224B8009F9411 /* SettingConditions.cpp in Sources */,
+ 7C14099A183224B8009F9411 /* SettingDependency.cpp in Sources */,
+ 7C14099D183224B8009F9411 /* SettingRequirement.cpp in Sources */,
+ 7C1409A0183224B8009F9411 /* SettingSection.cpp in Sources */,
+ 7C1409A3183224B8009F9411 /* SettingsManager.cpp in Sources */,
+ 7C1409A6183224B8009F9411 /* SettingUpdate.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
E49911FB174E5D4500741B6D /* DVDMessageTracker.cpp in Sources */,
E49911FC174E5D4500741B6D /* DVDOverlayContainer.cpp in Sources */,
E49911FD174E5D4500741B6D /* DVDOverlayRenderer.cpp in Sources */,
- E49911FE174E5D4500741B6D /* DVDPerformanceCounter.cpp in Sources */,
E49911FF174E5D4500741B6D /* DVDPlayer.cpp in Sources */,
E4991200174E5D4500741B6D /* DVDPlayerAudio.cpp in Sources */,
E4991201174E5D4500741B6D /* DVDPlayerSubtitle.cpp in Sources */,
E499141D174E603C00741B6D /* GUIWindowTestPattern.cpp in Sources */,
E499141E174E603C00741B6D /* AdvancedSettings.cpp in Sources */,
E499141F174E603C00741B6D /* DisplaySettings.cpp in Sources */,
- E4991420174E603C00741B6D /* ISetting.cpp in Sources */,
E4991421174E603C00741B6D /* MediaSettings.cpp in Sources */,
E4991422174E603C00741B6D /* MediaSourceSettings.cpp in Sources */,
- E4991423174E603C00741B6D /* Setting.cpp in Sources */,
E4991424174E603C00741B6D /* SettingAddon.cpp in Sources */,
- E4991425174E603C00741B6D /* SettingCategoryAccess.cpp in Sources */,
- E4991426174E603C00741B6D /* SettingConditions.cpp in Sources */,
E4991427174E603C00741B6D /* SettingControl.cpp in Sources */,
- E4991428174E603C00741B6D /* SettingDependency.cpp in Sources */,
E4991429174E603C00741B6D /* SettingPath.cpp in Sources */,
E499142A174E603C00741B6D /* Settings.cpp in Sources */,
- E499142B174E603C00741B6D /* SettingSection.cpp in Sources */,
- E499142C174E603C00741B6D /* SettingsManager.cpp in Sources */,
- E499142D174E603C00741B6D /* SettingUpdate.cpp in Sources */,
E499142F174E603C00741B6D /* SkinSettings.cpp in Sources */,
E4991430174E603C00741B6D /* VideoSettings.cpp in Sources */,
E4991431174E604300741B6D /* DarwinStorageProvider.cpp in Sources */,
F55BA70B17AB2264002A36D1 /* StereoscopicsManager.cpp in Sources */,
F55BA71017AB2293002A36D1 /* RenderFlags.cpp in Sources */,
F59EED7F17AD5174005BB7C6 /* ApplicationPlayer.cpp in Sources */,
- DF29668117B2B04300DF10F9 /* SettingRequirement.cpp in Sources */,
DF28DF4E17B8379E0077F41A /* ProfilesOperations.cpp in Sources */,
DFD882F717DD1A5B001516FE /* AddonPythonInvoker.cpp in Sources */,
DFD882E817DD189E001516FE /* StringValidation.cpp in Sources */,
7C920CFA181669FF00DA1477 /* TextureOperations.cpp in Sources */,
DFEF0BAD180ADE6400AEAED1 /* FileItemListModification.cpp in Sources */,
DFEF0BC2180ADEDA00AEAED1 /* SmartPlaylistFileItemListModifier.cpp in Sources */,
- 7C2612681820667C0086E04D /* ISettingControl.cpp in Sources */,
7CC82C9418284F9F0010DF30 /* CharsetDetection.cpp in Sources */,
+ DF6D1DFE18312525009DB64F /* OverlayRendererGUI.cpp in Sources */,
+ 7C26126D182068660086E04D /* SettingsOperations.cpp in Sources */,
+ 7C7BCDC817727951004842FB /* IListProvider.cpp in Sources */,
+ 7C7BCDCA17727951004842FB /* StaticProvider.cpp in Sources */,
+ 7C8FC6EF1829A4580045153D /* DirectoryProvider.cpp in Sources */,
+ 7C4E6F731829AA9700F1068F /* GUIDialogSubtitles.cpp in Sources */,
+ 7C14098A183224B8009F9411 /* ISetting.cpp in Sources */,
+ 7C14098D183224B8009F9411 /* ISettingControl.cpp in Sources */,
+ 7C140990183224B8009F9411 /* Setting.cpp in Sources */,
+ 7C140993183224B8009F9411 /* SettingCategoryAccess.cpp in Sources */,
+ 7C140996183224B8009F9411 /* SettingConditions.cpp in Sources */,
+ 7C140999183224B8009F9411 /* SettingDependency.cpp in Sources */,
+ 7C14099C183224B8009F9411 /* SettingRequirement.cpp in Sources */,
+ 7C14099F183224B8009F9411 /* SettingSection.cpp in Sources */,
+ 7C1409A2183224B8009F9411 /* SettingsManager.cpp in Sources */,
+ 7C1409A5183224B8009F9411 /* SettingUpdate.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
HAS_SPC_CODEC,
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- GCC_VERSION = com.apple.compilers.llvmgcc42;
+ GCC_VERSION = "";
GENERATE_PROFILING_CODE = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_UNROLL_LOOPS = YES;
- GCC_VERSION = com.apple.compilers.llvmgcc42;
+ GCC_VERSION = "";
HEADER_SEARCH_PATHS = (
"$(inherited)",
$SRCROOT,
<left>10</left>
<top>195</top>
<width>600</width>
- <height>160</height>
- <font>font12</font>
+ <height>170</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Property(Addon.Description)]</label>
</control>
<control type="scrollbar" id="60">
<left>610</left>
- <top>190</top>
+ <top>195</top>
<width>25</width>
- <height>175</height>
+ <height>170</height>
<texturesliderbackground border="0,14,0,14">ScrollBarV.png</texturesliderbackground>
<texturesliderbar border="0,14,0,14">ScrollBarV_bar.png</texturesliderbar>
<texturesliderbarfocus border="0,14,0,14">ScrollBarV_bar_focus.png</texturesliderbarfocus>
<width>600</width>
<height>40</height>
<font>font12</font>
- <align>justify</align>
+ <align>left</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Property(Addon.Disclaimer)]</label>
<autoscroll time="2000" delay="3000" repeat="5000">true</autoscroll>
<control type="textbox" id="401">
<description>Description</description>
<left>10</left>
- <top>195</top>
+ <top>205</top>
<width>600</width>
- <height>250</height>
- <font>font12</font>
+ <height>240</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Property(Addon.Description)]</label>
</control>
<control type="scrollbar" id="61">
<left>610</left>
- <top>190</top>
+ <top>205</top>
<width>25</width>
- <height>250</height>
+ <height>240</height>
<texturesliderbackground border="0,14,0,14">ScrollBarV.png</texturesliderbackground>
<texturesliderbar border="0,14,0,14">ScrollBarV_bar.png</texturesliderbar>
<texturesliderbarfocus border="0,14,0,14">ScrollBarV_bar_focus.png</texturesliderbarfocus>
<left>210</left>
<top>515</top>
<width>1030</width>
- <height>120</height>
- <font>font12</font>
+ <height>124</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<pagecontrol>61</pagecontrol>
<ondown>10</ondown>
<visible>system.getbool(input.enablemouse)</visible>
</control>
- <control type="label" id="2">
- <description>dialog line 1</description>
+ <control type="textbox" id="9">
+ <description>text</description>
<left>30</left>
<top>60</top>
<width>550</width>
- <height>30</height>
- <align>left</align>
- <aligny>center</aligny>
- <label>-</label>
- <font>font13</font>
- </control>
- <control type="label" id="3">
- <description>dialog line 2</description>
- <left>30</left>
- <top>85</top>
- <width>550</width>
- <height>30</height>
+ <height>80</height>
<align>left</align>
- <aligny>center</aligny>
- <label>-</label>
- <font>font13</font>
- </control>
- <control type="label" id="4">
- <description>dialog line 3</description>
- <left>30</left>
- <top>110</top>
- <width>550</width>
- <height>30</height>
- <align>left</align>
- <aligny>center</aligny>
<label>-</label>
<font>font13</font>
+ <autoscroll time="3000" delay="4000" repeat="5000">Skin.HasSetting(AutoScroll)</autoscroll>
</control>
<control type="button" id="10">
<description>OK button</description>
<left>40</left>
<top>275</top>
<width>650</width>
- <height>295</height>
- <font>font12</font>
+ <height>285</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<shadowcolor>black</shadowcolor>
<top>400</top>
<width>650</width>
<height>180</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<pagecontrol>60</pagecontrol>
<label fallback="161">$INFO[ListItem.Plot]</label>
--- /dev/null
+<window type="dialog">
+ <coordinates>
+ <system>1</system>
+ <left>380</left>
+ <top>0</top>
+ </coordinates>
+ <controls>
+ <control type="group" id="250">
+<!-- <animation effect="slide" start="900,0" end="0,0" time="500" delay="800" tween="quadratic" easing="out">WindowOpen</animation> -->
+ <animation effect="slide" start="0,0" end="900,0" time="500" tween="quadratic" easing="out">WindowClose</animation>
+ <animation type="Conditional" condition="Control.HasFocus(150)" reversible="true">
+ <effect type="slide" end="-250,0" time="400" />
+ </animation>
+ <control type="button" id="8999">
+ <description>Fake button for mouse control</description>
+ <left>880</left>
+ <top>0</top>
+ <width>20</width>
+ <height>720</height>
+ <label>-</label>
+ <font>-</font>
+ <texturenofocus>-</texturenofocus>
+ <texturefocus>-</texturefocus>
+ <visible>true</visible>
+ </control>
+ <control type="image">
+ <description>media info background image</description>
+ <left>0</left>
+ <top>0</top>
+ <width>1150</width>
+ <height>720</height>
+ <colordiffuse>BBFFFFFF</colordiffuse>
+ <texture border="20,0,0,0" flipx="true">MediaBladeSub.png</texture>
+ </control>
+ <control type="button">
+ <description>Close Window button</description>
+ <left>20</left>
+ <top>0</top>
+ <width>64</width>
+ <height>32</height>
+ <label>-</label>
+ <font>-</font>
+ <onclick>PreviousMenu</onclick>
+ <texturefocus>DialogCloseButton-focus.png</texturefocus>
+ <texturenofocus>DialogCloseButton.png</texturenofocus>
+ <onleft>101</onleft>
+ <onright>101</onright>
+ <onup>101</onup>
+ <ondown>101</ondown>
+ <visible>system.getbool(input.enablemouse)</visible>
+ </control>
+ <control type="group">
+ <control type="label" id="100">
+ <description>header label</description>
+ <right>880</right>
+ <top>80</top>
+ <width>550</width>
+ <height>30</height>
+ <font>font30_title</font>
+ <align>right</align>
+ <aligny>center</aligny>
+ <textcolor>FFFFFFFF</textcolor>
+ <shadowcolor>FF000000</shadowcolor>
+ </control>
+ <control type="label">
+ <description>Video label</description>
+ <right>880</right>
+ <top>110</top>
+ <width>550</width>
+ <height>30</height>
+ <font>font13_title</font>
+ <label>$INFO[Player.Filename]</label>
+ <align>right</align>
+ <aligny>center</aligny>
+ <textcolor>grey</textcolor>
+ <shadowcolor>FF000000</shadowcolor>
+ </control>
+ <control type="image">
+ <left>30</left>
+ <top>140</top>
+ <width>820</width>
+ <height>4</height>
+ <texture>separator.png</texture>
+ </control>
+ <control type="image" id="110">
+ <description>Service Logo</description>
+ <left>0</left>
+ <top>80</top>
+ <width>250</width>
+ <height>40</height>
+ <aspectratio>keep</aspectratio>
+ </control>
+ <control type="label" id="140">
+ <description>textarea</description>
+ <left>50</left>
+ <top>140</top>
+ <width>780</width>
+ <height>40</height>
+ <font>font13</font>
+ <textcolor>FFFFFFFF</textcolor>
+ <align>center</align>
+ <aligny>center</aligny>
+ <wrapmultiline>true</wrapmultiline>
+ </control>
+ <control type="image">
+ <left>30</left>
+ <top>176</top>
+ <width>820</width>
+ <height>4</height>
+ <texture>separator.png</texture>
+ </control>
+ </control>
+ <!-- ** Required ** Do not change <id>or<type>-->
+ <control type="group">
+ <control type="list" id="120">
+ <left>50</left>
+ <top>206</top>
+ <width>800</width>
+ <height>434</height>
+ <onleft>121</onleft>
+ <onright>150</onright>
+ <onup>120</onup>
+ <ondown>120</ondown>
+ <viewtype label="535">list</viewtype>
+ <pagecontrol>121</pagecontrol>
+ <scrolltime>200</scrolltime>
+ <itemlayout width="800" height="36">
+ <control type="image">
+ <left>0</left>
+ <top>0</top>
+ <width>780</width>
+ <height>38</height>
+ <texture>MenuItemNF.png</texture>
+ </control>
+ <control type="image">
+ <left>5</left>
+ <top>11</top>
+ <width>26</width>
+ <height>17</height>
+ <texture>Subtitles/flags/$INFO[ListItem.Thumb].gif</texture>
+ </control>
+ <control type="label">
+ <left>40</left>
+ <top>0</top>
+ <width>90</width>
+ <height>38</height>
+ <font>font18</font>
+ <aligny>center</aligny>
+ <textcolor>FFFFFFFF</textcolor>
+ <selectedcolor>FF0084FF</selectedcolor>
+ <align>left</align>
+ <info>ListItem.Label</info>
+ </control>
+ <control type="image">
+ <left>135</left>
+ <top>13</top>
+ <width>20</width>
+ <height>12</height>
+ <texture>Subtitles/icon_close_caption.png</texture>
+ <visible>ListItem.property(hearing_imp)</visible>
+ </control>
+ <control type="image">
+ <left>160</left>
+ <top>13</top>
+ <width>40</width>
+ <height>12</height>
+ <texture>Subtitles/icon_sync.png</texture>
+ <visible>ListItem.property(sync)</visible>
+ </control>
+ <control type="label">
+ <left>205</left>
+ <top>0</top>
+ <width>495</width>
+ <height>38</height>
+ <font>font18</font>
+ <aligny>center</aligny>
+ <textcolor>FFFFFFFF</textcolor>
+ <selectedcolor>FF0084FF</selectedcolor>
+ <align>left</align>
+ <info>ListItem.Label2</info>
+ </control>
+ <control type="image">
+ <left>710</left>
+ <top>11</top>
+ <width>90</width>
+ <height>17</height>
+ <texture>LeftRating/rating$INFO[ListItem.ActualIcon].png</texture>
+ </control>
+ </itemlayout>
+ <focusedlayout width="800" height="36">
+ <control type="image">
+ <left>0</left>
+ <top>0</top>
+ <width>780</width>
+ <height>38</height>
+ <texture>MenuItemNF.png</texture>
+ </control>
+ <control type="image">
+ <left>0</left>
+ <top>0</top>
+ <width>780</width>
+ <height>38</height>
+ <texture>MenuItemFO.png</texture>
+ <visible>Control.HasFocus(120)</visible>
+ </control>
+ <control type="image">
+ <left>5</left>
+ <top>11</top>
+ <width>26</width>
+ <height>17</height>
+ <texture>Subtitles/flags/$INFO[ListItem.Thumb].gif</texture>
+ </control>
+ <control type="label">
+ <left>40</left>
+ <top>0</top>
+ <width>90</width>
+ <height>38</height>
+ <font>font18</font>
+ <aligny>center</aligny>
+ <textcolor>FFFFFFFF</textcolor>
+ <selectedcolor>FF0084FF</selectedcolor>
+ <align>left</align>
+ <info>ListItem.Label</info>
+ </control>
+ <control type="image">
+ <left>135</left>
+ <top>13</top>
+ <width>20</width>
+ <height>12</height>
+ <texture>Subtitles/icon_close_caption.png</texture>
+ <visible>ListItem.property(hearing_imp)</visible>
+ </control>
+ <control type="image">
+ <left>160</left>
+ <top>13</top>
+ <width>40</width>
+ <height>12</height>
+ <texture>Subtitles/icon_sync.png</texture>
+ <visible>ListItem.property(sync)</visible>
+ </control>
+ <control type="label">
+ <left>205</left>
+ <top>0</top>
+ <width>495</width>
+ <height>38</height>
+ <font>font18</font>
+ <aligny>center</aligny>
+ <textcolor>FFFFFFFF</textcolor>
+ <selectedcolor>FF0084FF</selectedcolor>
+ <align>left</align>
+ <info>ListItem.Label2</info>
+ </control>
+ <control type="image">
+ <left>710</left>
+ <top>11</top>
+ <width>90</width>
+ <height>17</height>
+ <texture>LeftRating/rating$INFO[ListItem.ActualIcon].png</texture>
+ </control>
+ </focusedlayout>
+ </control>
+ <control type="spincontrol" id="121">
+ <description>Next page button</description>
+ <left>808</left>
+ <top>664</top>
+ <width>20</width>
+ <height>20</height>
+ <font>font13</font>
+ <align>right</align>
+ <aligny>center</aligny>
+ <subtype>page</subtype>
+ <textcolor>FFFFFFFF</textcolor>
+ <onleft>120</onleft>
+ <onright>120</onright>
+ <ondown>120</ondown>
+ <onup>120</onup>
+ <textoffsetx>10</textoffsetx>
+ <textureup>scroll-up.png</textureup>
+ <texturedown>scroll-down.png</texturedown>
+ <textureupfocus>scroll-up-focus.png</textureupfocus>
+ <texturedownfocus>scroll-down-focus.png</texturedownfocus>
+ <showonepage>false</showonepage>
+ <visible>Control.IsVisible(120)</visible>
+ </control>
+ <control type="group" id="130">
+ <control type="grouplist">
+ <left>20</left>
+ <top>660</top>
+ <width>305</width>
+ <height>40</height>
+ <align>right</align>
+ <orientation>horizontal</orientation>
+ <itemgap>5</itemgap>
+ <control type="image">
+ <width>40</width>
+ <height>40</height>
+ <texture>DefaultIconInfo.png</texture>
+ </control>
+ <control type="label">
+ <description>notification</description>
+ <width min="10" max="260">auto</width>
+ <height>40</height>
+ <font>font13</font>
+ <textcolor>FFFFFFFF</textcolor>
+ <label>31413</label>
+ <aligny>center</aligny>
+ <wrapmultiline>true</wrapmultiline>
+ </control>
+ </control>
+ </control>
+ <control type="image">
+ <left>866</left>
+ <top>348</top>
+ <width>24</width>
+ <height>24</height>
+ <texture>scroll-right-focus.png</texture>
+ </control>
+ </control>
+ <control type="group">
+ <control type="image">
+ <description>separator</description>
+ <left>542</left>
+ <top>360</top>
+ <width>720</width>
+ <height>4</height>
+ <texture>separator.png</texture>
+ <animation effect="rotate" start="0" end="90" center="auto" time="0" condition="true">Conditional</animation>
+ </control>
+ <control type="label">
+ <left>905</left>
+ <top>150</top>
+ <width>240</width>
+ <height>26</height>
+ <label>[B]$LOCALIZE[24018][/B]</label>
+ <font>font13</font>
+ <align>center</align>
+ <aligny>top</aligny>
+ <textcolor>FFEB9E17</textcolor>
+ <shadowcolor>FF000000</shadowcolor>
+ <wrapmultiline>true</wrapmultiline>
+ </control>
+ <control type="image">
+ <description>separator</description>
+ <left>900</left>
+ <top>176</top>
+ <width>240</width>
+ <height>4</height>
+ <texture>separator.png</texture>
+ </control>
+ <control type="list" id="150">
+ <left>900</left>
+ <top>206</top>
+ <width>250</width>
+ <height>434</height>
+ <onleft>120</onleft>
+ <onright>120</onright>
+ <onup>150</onup>
+ <ondown>150</ondown>
+ <viewtype label="535">list</viewtype>
+ <scrolltime>200</scrolltime>
+ <itemlayout width="400" height="36">
+ <control type="image">
+ <left>0</left>
+ <top>0</top>
+ <width>230</width>
+ <height>38</height>
+ <texture>MenuItemNF.png</texture>
+ </control>
+ <control type="label">
+ <left>40</left>
+ <top>0</top>
+ <width>230</width>
+ <height>38</height>
+ <font>font18</font>
+ <aligny>center</aligny>
+ <textcolor>FFFFFFFF</textcolor>
+ <selectedcolor>FF0084FF</selectedcolor>
+ <align>left</align>
+ <info>ListItem.Label</info>
+ </control>
+ </itemlayout>
+ <focusedlayout width="400" height="36">
+ <control type="image">
+ <left>0</left>
+ <top>0</top>
+ <width>230</width>
+ <height>38</height>
+ <texture>MenuItemNF.png</texture>
+ </control>
+ <control type="image">
+ <left>10</left>
+ <top>0</top>
+ <width>230</width>
+ <height>38</height>
+ <texture>MenuItemFO.png</texture>
+ <visible>Control.HasFocus(150)</visible>
+ </control>
+ <control type="label">
+ <left>40</left>
+ <top>0</top>
+ <width>230</width>
+ <height>38</height>
+ <font>font18</font>
+ <aligny>center</aligny>
+ <textcolor>FFFFFFFF</textcolor>
+ <selectedcolor>FF0084FF</selectedcolor>
+ <align>left</align>
+ <info>ListItem.Label</info>
+ </control>
+ </focusedlayout>
+ </control>
+ </control>
+ </control>
+ </controls>
+</window>
<control type="textbox" id="400">
<description>Description Value for Movies</description>
<left>210</left>
- <top>515</top>
+ <top>525</top>
<width>1030</width>
<height>120</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<pagecontrol>61</pagecontrol>
<enable>!IsEmpty(Skin.String(LyricScript_Path))</enable>
<onclick>Addon.OpenSettings($INFO[Skin.String(LyricScript_Path)])</onclick>
</control>
- <control type="label" id="457">
- <width>750</width>
- <height>45</height>
- <font>font13_title</font>
- <label>31141</label>
- <textcolor>blue</textcolor>
- <shadowcolor>black</shadowcolor>
- <align>left</align>
- <aligny>center</aligny>
- </control>
- <control type="button" id="458">
- <width>750</width>
- <height>40</height>
- <font>font13</font>
- <label>$LOCALIZE[31133]</label>
- <label2>[COLOR=selected]$INFO[system.addontitle(Skin.String(SubtitleScript_Path))][/COLOR]</label2>
- <textcolor>grey2</textcolor>
- <focusedcolor>white</focusedcolor>
- <texturefocus>MenuItemFO.png</texturefocus>
- <texturenofocus>MenuItemNF.png</texturenofocus>
- <onclick>Skin.SetAddon(SubtitleScript_Path,xbmc.python.subtitles)</onclick>
- </control>
- <control type="button" id="459">
- <width>750</width>
- <height>40</height>
- <font>font13</font>
- <label>- $LOCALIZE[24020]</label>
- <textcolor>grey2</textcolor>
- <focusedcolor>white</focusedcolor>
- <texturefocus>MenuItemFO.png</texturefocus>
- <texturenofocus>MenuItemNF.png</texturenofocus>
- <enable>!IsEmpty(Skin.String(SubtitleScript_Path))</enable>
- <onclick>Addon.OpenSettings($INFO[Skin.String(SubtitleScript_Path)])</onclick>
- </control>
<control type="label" id="410">
<width>750</width>
<description>BER value</description>
<left>220</left>
<top>165</top>
- <width>1000</width>
+ <width>165</width>
<height>25</height>
<label>$INFO[PVR.ActStreamBER]</label>
<align>left</align>
</control>
<control type="label">
<description>UNC</description>
- <left>430</left>
+ <left>390</left>
<top>165</top>
<width>165</width>
<height>25</height>
</control>
<control type="label">
<description>UNC value</description>
- <left>600</left>
+ <left>560</left>
<top>165</top>
- <width>1000</width>
+ <width>165</width>
<height>25</height>
<label>$INFO[PVR.ActStreamUNC]</label>
<align>left</align>
<textcolor>white</textcolor>
</control>
<control type="label">
+ <description>Service</description>
+ <left>730</left>
+ <top>165</top>
+ <width>165</width>
+ <height>25</height>
+ <label>$LOCALIZE[19099]:</label>
+ <align>left</align>
+ <aligny>center</aligny>
+ <font>font12</font>
+ <textcolor>grey2</textcolor>
+ </control>
+ <control type="label">
+ <description>Service value</description>
+ <left>900</left>
+ <top>165</top>
+ <width>330</width>
+ <height>25</height>
+ <label>$INFO[PVR.ActStreamServiceName]</label>
+ <align>left</align>
+ <aligny>center</aligny>
+ <font>font12</font>
+ <textcolor>white</textcolor>
+ </control>
+ <control type="label">
<description>Encryption</description>
<left>50</left>
<top>190</top>
<description>Encryption value</description>
<left>220</left>
<top>190</top>
- <width>1000</width>
+ <width>165</width>
<height>25</height>
<label>$INFO[PVR.ActStreamEncryptionName]</label>
<align>left</align>
<font>font12</font>
<textcolor>white</textcolor>
</control>
+ <control type="label">
+ <description>Provider</description>
+ <left>390</left>
+ <top>190</top>
+ <width>165</width>
+ <height>25</height>
+ <label>$LOCALIZE[19101]:</label>
+ <align>left</align>
+ <aligny>center</aligny>
+ <font>font12</font>
+ <textcolor>grey2</textcolor>
+ </control>
+ <control type="label">
+ <description>Provider value</description>
+ <left>560</left>
+ <top>190</top>
+ <width>165</width>
+ <height>25</height>
+ <label>$INFO[PVR.ActStreamProviderName]</label>
+ <align>left</align>
+ <aligny>center</aligny>
+ <font>font12</font>
+ <textcolor>white</textcolor>
+ </control>
+ <control type="label">
+ <description>Mux</description>
+ <left>730</left>
+ <top>190</top>
+ <width>165</width>
+ <height>25</height>
+ <label>$LOCALIZE[19100]:</label>
+ <align>left</align>
+ <aligny>center</aligny>
+ <font>font12</font>
+ <textcolor>grey2</textcolor>
+ </control>
+ <control type="label">
+ <description>Mux value</description>
+ <left>900</left>
+ <top>190</top>
+ <width>330</width>
+ <height>25</height>
+ <label>$INFO[PVR.ActStreamMux]</label>
+ <align>left</align>
+ <aligny>center</aligny>
+ <font>font12</font>
+ <textcolor>white</textcolor>
+ </control>
</control>
</controls>
</window>
<alttexturefocus border="25,5,25,5">SubMenuBack-MiddleFO.png</alttexturefocus>
<alttexturenofocus border="25,5,25,5">SubMenuBack-MiddleNF.png</alttexturenofocus>
<onclick>Close</onclick>
- <onclick>XBMC.RunScript($INFO[Skin.String(SubtitleScript_Path)])</onclick>
- <altclick>Skin.SetAddon(SubtitleScript_Path,xbmc.python.subtitles)</altclick>
- <altclick>Close</altclick>
- <altclick>XBMC.RunScript($INFO[Skin.String(SubtitleScript_Path)])</altclick>
- <usealttexture>IsEmpty(Skin.String(SubtitleScript_Path))</usealttexture>
- <pulseonselect>false</pulseonselect>
+ <onclick>Dialog.Close(VideoOSD)</onclick>
+ <onclick>ActivateWindow(SubtitleSearch)</onclick>
</control>
<control type="button" id="402">
<height>40</height>
<control type="textbox">
<description>Description</description>
<left>10</left>
- <top>100</top>
+ <top>95</top>
<width>490</width>
- <height>180</height>
- <font>font12</font>
+ <height>192</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Property(Addon.Description)]</label>
<top>110</top>
<width>290</width>
<height>400</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Property(Addon.Description)]</label>
<top>330</top>
<width>290</width>
<height>220</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<left>0</left>
<top>150</top>
<width>850</width>
- <height>140</height>
- <font>font12</font>
+ <height>146</height>
+ <font>font13</font>
<align>justify</align>
<pagecontrol>-</pagecontrol>
<textcolor>white</textcolor>
<control type="textbox">
<description>Description Value for Artist</description>
<left>10</left>
- <top>65</top>
+ <top>70</top>
<width>490</width>
- <height>190</height>
- <font>font12</font>
+ <height>192</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Property(Artist_Description)]</label>
<top>270</top>
<width>290</width>
<height>300</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<pagecontrol>-</pagecontrol>
<textcolor>white</textcolor>
<control type="textbox">
<description>Plot Value for TVShow</description>
<left>0</left>
- <top>43</top>
+ <top>50</top>
<width>690</width>
- <height>80</height>
- <font>font12</font>
+ <height>74</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<shadowcolor>black</shadowcolor>
<control type="textbox">
<description>Plot Value for TVShow</description>
<left>0</left>
- <top>43</top>
+ <top>50</top>
<width>690</width>
- <height>80</height>
- <font>font12</font>
+ <height>74</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<shadowcolor>black</shadowcolor>
<top>270</top>
<width>290</width>
<height>280</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[Container(13).ListItem.Plot]</label>
<left>0</left>
<top>30</top>
<width>850</width>
- <height>120</height>
- <font>font12</font>
+ <height>100</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<left>10</left>
<top>210</top>
<width>510</width>
- <height>180</height>
- <font>font12</font>
+ <height>190</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<left>10</left>
<top>245</top>
<width>510</width>
- <height>25</height>
+ <height>30</height>
<label>$INFO[ListItem.Season,[COLOR=blue] $LOCALIZE[20373] :[/COLOR] ] $INFO[ListItem.episode,[COLOR=blue] $LOCALIZE[20359] :[/COLOR] ] $INFO[ListItem.premiered,[COLOR=blue] $LOCALIZE[31322] :[/COLOR] ]</label>
<align>center</align>
- <aligny>top</aligny>
+ <aligny>center</aligny>
<font>font12</font>
<textcolor>white</textcolor>
<shadowcolor>black</shadowcolor>
<top>280</top>
<width>510</width>
<height>120</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<top>0</top>
<width>250</width>
<height>355</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[Container.ShowPlot]</label>
<top>0</top>
<width>250</width>
<height>355</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<top>395</top>
<width>490</width>
<height>170</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<top>395</top>
<width>490</width>
<height>170</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<control type="textbox">
<description>Description Value for Video</description>
<left>10</left>
- <top>425</top>
+ <top>430</top>
<width>540</width>
- <height>105</height>
- <font>font12</font>
+ <height>100</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<control type="textbox">
<description>Description Value for Video</description>
<left>10</left>
- <top>425</top>
+ <top>430</top>
<width>540</width>
<height>145</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<control type="textbox">
<description>Description Value for Video</description>
<left>10</left>
- <top>425</top>
+ <top>430</top>
<width>540</width>
<height>145</height>
- <font>font12</font>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[Container.ShowPlot]</label>
<control type="textbox">
<description>Description Value for Video</description>
<left>10</left>
- <top>425</top>
+ <top>430</top>
<width>400</width>
- <height>105</height>
- <font>font12</font>
+ <height>100</height>
+ <font>font13</font>
<align>justify</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Plot]</label>
<value condition="IsEmpty(ListItem.Art(poster))">$INFO[ListItem.Icon]</value>
</variable>
<variable name="PlayList">
- <value condition="Player.HasVideo">ActivateWindow(videoplaylist)</value>
- <value condition="Player.HasAudio">ActivateWindow(musicplaylist)</value>
+ <value condition="Window.IsActive(videolibrary) + !StringCompare(Playlist.Length(video),0)">ActivateWindow(videoplaylist)</value>
+ <value condition="[Window.IsActive(musiclibrary) | Window.IsActive(musicfiles)] + !StringCompare(Playlist.Length(music),0)">ActivateWindow(musicplaylist)</value>
</variable>
<include name="BehindDialogFadeOut">
<include>ButtonCommonValues</include>
<label>13350</label>
<onclick>$VAR[PlayList]</onclick>
- <visible>Player.HasMedia</visible>
- <visible>!VideoPlayer.Content(LiveTV)</visible>
+ <visible>[Window.IsActive(videolibrary) + !StringCompare(Playlist.Length(video),0)] | [[Window.IsActive(musiclibrary) | Window.IsActive(musicfiles)] + !StringCompare(Playlist.Length(music),0)]</visible>
<visible>!Window.IsVisible(MusicPlaylist) + !Window.IsVisible(VideoPlaylist)</visible>
</control>
</include>
msgid "Lyrics Add-on"
msgstr ""
-msgctxt "#31133"
-msgid "Subtitle Add-on"
-msgstr ""
+#empty string with id 31133
msgctxt "#31134"
msgid "Home Page Videos Sub-menu"
msgid "This tab signifies that there is a menu off to the side of this window that contains extra options for this section. To access the menu, navigate to the left with your remote control or keyboard or place your mouse pointer over the tab. [CR][CR]Click \"Ok\" to close this dialogue. It will not appear again."
msgstr ""
-#empty strings from id 31413 to 31420
+msgctxt "#31413"
+msgid "Local subtitle available"
+msgstr ""
+
+#empty strings from id 31414 to 31420
msgctxt "#31421"
msgid "Select your XBMC user Profile[CR]to login and continue"
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="xbmc.json" version="6.12.0" provider-name="Team XBMC">
+<addon id="xbmc.json" version="6.13.0" provider-name="Team XBMC">
<backwards-compatibility abi="6.0.0"/>
<requires>
<import addon="xbmc.core" version="0.1.0"/>
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="xbmc.pvr" version="1.8.1" provider-name="Team XBMC">
+<addon id="xbmc.pvr" version="1.9.0" provider-name="Team XBMC">
<requires>
<import addon="xbmc.core" version="0.1.0"/>
</requires>
xbmc/main/Makefile \
project/cmake/xbmc-config.cmake"
-if $use_wayland = "yes"; then
+if test "$use_wayland" = "yes"; then
OUTPUT_FILES="$OUTPUT_FILES xbmc/windowing/tests/wayland/Makefile"
fi
#: xbmc\settings\DisplaySettings.cpp
msgctxt "#13111"
-msgid "Would you like to keep this resolution?"
+msgid "Would you like to keep this change?"
msgstr ""
#: unknown
msgid "VDPAU Studio level colour conversion"
msgstr ""
-#empty strings from id 13123 to 13129
+msgctxt "#13123"
+msgid "Keep skin?"
+msgstr ""
+
+#empty strings from id 13124 to 13129
#: system/settings/settings.xml
msgctxt "#13130"
msgid "Allow hardware acceleration (MediaCodec)"
msgstr ""
-#empty strings from id 13440 to 13499
+msgctxt "#13440"
+msgid "Frame Multi Threaded Decoding (less reliable)"
+msgstr ""
+
+#empty strings from id 13441 to 13499
#: system/settings/settings.xml
msgctxt "#13500"
msgstr ""
msgctxt "#16106"
-msgid "Manage ..."
+msgid "Manage..."
msgstr ""
msgctxt "#16107"
msgid "Warning"
msgstr ""
-#empty strings from id 19099 to 19101
+#: xbmc/pvr/PVRGUIInfo.cpp
+msgctxt "#19099"
+msgid "Service"
+msgstr ""
+
+#: xbmc/pvr/PVRGUIInfo.cpp
+msgctxt "#19100"
+msgid "Mux"
+msgstr ""
+
+#: xbmc/pvr/PVRGUIInfo.cpp
+msgctxt "#19101"
+msgid "Provider"
+msgstr ""
msgctxt "#19102"
msgid "Please switch to another channel."
msgid "%s to %s"
msgstr ""
-#empty strings from id 21470 to 21799
+#empty strings from id 21470 to 21599
+
+#: xbmc/cores/dvdplayer/DVDPlayer.cpp
+msgctxt "#21600"
+msgid "Prefer external subtitles"
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#21601"
+msgid "Prefer external subtitles to internal ones"
+msgstr ""
+
+#: xbmc/Util.cpp
+msgctxt "#21602"
+msgid "(External)"
+msgstr ""
+
+#empty strings from id 21603 to 21799
msgctxt "#21800"
msgid "File name"
msgid "Available Updates"
msgstr ""
-#: xbmc/addons/addoninstaller.cpp
-#: xbmc/addons/Repository.cpp
+#: xbmc/addons/AddonInstaller.cpp
+#: xbmc/addons/AddonsDatabase.cpp
msgctxt "#24044"
msgid "Dependencies not met. Please contact Add-on author."
msgstr ""
msgid "Rollback"
msgstr ""
-#empty string with id 24049
+#: xbmc/addons/AddonsDirectory.cpp
+msgctxt "#24049"
+msgid "Incompatible"
+msgstr ""
#: unknown
msgctxt "#24050"
msgid "Lock Add-on manager"
msgstr ""
-#empty strings from id 24091 to 24093
+#: xbmc\addons\GUIDialogAddonInfo.cpp
+msgctxt "#24091"
+msgid "This Add-on cannot be disabled"
+msgstr ""
+
+#empty strings from id 24092 to 24093
#: xbmc/addons/guidialogaddoninfo.cpp
msgctxt "#24094"
msgid "Skin is missing some files"
msgstr ""
-#empty strings from id 24104 to 24999
+#: xbmc/addons/Repository.cpp
+msgctxt "#24104"
+msgid "Add-on is incompatible due to unmet dependencies."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#24105"
+msgid "Pause when searching for subtitles"
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#24106"
+msgid "If not saved to movie folder subtitles will be downloaded to custom subtitle folder"
+msgstr ""
+
+#: xbmc/dialogs/GUIDialogSubtitles.cpp
+msgctxt "#24107"
+msgid "Searching for subtitles ..."
+msgstr ""
+
+#: xbmc/dialogs/GUIDialogSubtitles.cpp
+msgctxt "#24108"
+msgid "%d subtitles found"
+msgstr ""
+
+#: xbmc/dialogs/GUIDialogSubtitles.cpp
+msgctxt "#24109"
+msgid "No subtitles found"
+msgstr ""
+
+#: xbmc/dialogs/GUIDialogSubtitles.cpp
+msgctxt "#24110"
+msgid "Downloading subtitles ..."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#24111"
+msgid "Languages to download subtitles for"
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#24112"
+msgid "Set languages to use when searching for subtitles. Not all subtitle services will use all languages."
+msgstr ""
+
+#: xbmc/dialogs/GUIDialogSubtitles.cpp
+msgctxt "#24113"
+msgid "Failed to download subtitle"
+msgstr ""
+
+#: xbmc/dialogs/GUIDialogSubtitles.cpp
+msgctxt "#24114"
+msgid "No subtitle services installed"
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#24115"
+msgid "Save subtitles to movie folder"
+msgstr ""
+
+#empty strings from id 24116 to 24999
msgctxt "#25000"
msgid "Notifications"
msgid "Enable hardware video decode using AMLogic decoder"
msgstr ""
-#empty strings from id 36423 to 36499
+#: system/settings/settings.xml
+msgctxt "#36423"
+msgid "Use ffmpeg frame multiple thread decoding when hardware decoding not working or disabled. (less reliable than default single thread mode)"
+msgstr ""
+
+#empty strings from id 36424 to 36499
#end reservation
#: system/settings/settings.xml
<RootNamespace>XBMC_VDR</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\..\xbmc\addons\include;..\..\..\..\..\xbmc\addons;..\..\..\..\..\xbmc\cores\dvdplayer\DVDDemuxers;..\..\..\..\..\xbmc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WIN32;_DEBUG;_WINDOWS;VDR_EXPORTS;_WIN32PC;_WINSOCKAPI_;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
+ <PreprocessorDefinitions>VDR_EXPORTS;_WIN32PC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>..\..\..\..\..\addons\library.xbmc.addon\$(ProjectName).dll</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\..\..\xbmc\addons\include;..\..\..\..\..\xbmc\addons;..\..\..\..\..\xbmc\cores\dvdplayer\DVDDemuxers;..\..\..\..\..\xbmc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;WIN32;NDEBUG;_WINDOWS;HAS_SDL_OPENGL;HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>HAS_SDL_OPENGL;HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>..\..\..\..\..\addons\library.xbmc.addon\$(ProjectName).dll</OutputFile>
<RootNamespace>XBMC_VDR</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\..\xbmc;..\..\..\..\..\xbmc\addons\include;..\..\..\..\..\xbmc\cores\dvdplayer\DVDDemuxers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WIN32;_DEBUG;_WINDOWS;VDR_EXPORTS;_WIN32PC;_WINSOCKAPI_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
+ <PreprocessorDefinitions>VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\..\..\..\..\addons\library.xbmc.codec\$(ProjectName).dll</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\..\..\xbmc;..\..\..\..\..\xbmc\addons\include;..\..\..\..\..\xbmc\cores\dvdplayer\DVDDemuxers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;WIN32;NDEBUG;_WINDOWS;HAS_SDL_OPENGL;HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>HAS_SDL_OPENGL;HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>../../../../../addons/library.xbmc.codec/$(ProjectName).dll</OutputFile>
<RootNamespace>XBMC_VDR</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\..\xbmc;..\..\..\..\..\xbmc\addons\include;..\..\..\..\..\xbmc\cores\dvdplayer\DVDDemuxers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WIN32;_DEBUG;_WINDOWS;VDR_EXPORTS;_WIN32PC;_WINSOCKAPI_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
+ <PreprocessorDefinitions>VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>..\..\..\..\..\addons\library.xbmc.gui\$(ProjectName).dll</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\..\..\xbmc;..\..\..\..\..\xbmc\addons\include;..\..\..\..\..\xbmc\cores\dvdplayer\DVDDemuxers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;WIN32;NDEBUG;_WINDOWS;HAS_SDL_OPENGL;HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>HAS_SDL_OPENGL;HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>../../../../../addons/library.xbmc.gui/$(ProjectName).dll</OutputFile>
<RootNamespace>XBMC_VDR</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\..\xbmc;..\..\..\..\..\xbmc\addons\include;..\..\..\..\..\xbmc\cores\dvdplayer\DVDDemuxers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WIN32;_DEBUG;_WINDOWS;VDR_EXPORTS;_WIN32PC;_WINSOCKAPI_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
+ <PreprocessorDefinitions>VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>..\..\..\..\..\addons\library.xbmc.pvr\$(ProjectName).dll</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\..\..\xbmc;..\..\..\..\..\xbmc\addons\include;..\..\..\..\..\xbmc\cores\dvdplayer\DVDDemuxers;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;WIN32;NDEBUG;_WINDOWS;HAS_SDL_OPENGL;HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>HAS_SDL_OPENGL;HAS_SDL;_USRDLL;XBMC_VDR_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>..\..\..\..\..\addons\library.xbmc.pvr\$(ProjectName).dll</OutputFile>
<RootNamespace>libcmyth</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..;../include;include;../librefmem;../libcmyth;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;DEBUG;_LIB;inline=__inline; _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;inline=__inline;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;mysqlclient.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..;../include;include;../librefmem;../libcmyth;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;inline=__inline; _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;inline=__inline;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;mysqlclient.lib;%(AdditionalDependencies)</AdditionalDependencies>
<RootNamespace>cpluff</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Build</CustomBuildAfterTargets>
<CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Build</CustomBuildAfterTargets>
</PropertyGroup>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CP_C_API=CP_EXPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_USRDLL;CP_C_API=CP_EXPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>libexpat.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<ImportLibrary>$(OutDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<CustomBuildStep>
<Command>copy /B /Y "$(TargetPath)" "$(SolutionDir)..\..\system\$(TargetFileName)"</Command>
<Optimization>Full</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CP_C_API=CP_EXPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PreprocessorDefinitions>_USRDLL;CP_C_API=CP_EXPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile>
<Link>
<AdditionalDependencies>libexpat.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>$(OutDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<CustomBuildStep>
<Command>copy /B /Y "$(TargetPath)" "$(SolutionDir)..\..\system\$(TargetFileName)"</Command>
<ProjectName>ImageLib_dll</ProjectName>
<ProjectGuid>{3B424C94-2005-44CC-BFB1-4B6C89090732}</ProjectGuid>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ImageLib</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ImageLib</TargetName>
<CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Build</CustomBuildAfterTargets>
</HeaderFileName>
</Midl>
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>zlib;zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;JAS_WIN_MSVC_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_USRDLL;JAS_WIN_MSVC_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\CxImageCrtDll.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(Configuration)\vs2010\ImageLib.pdb</ProgramDatabaseFile>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(Configuration)\vs2010\cximagecrtd.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>
</HeaderFileName>
</Midl>
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>zlib;zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;JAS_WIN_MSVC_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_USRDLL;JAS_WIN_MSVC_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Async</ExceptionHandling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\CxImageCrtDll.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<ProgramDatabaseFile>$(Configuration)\vs2010\cximagecrt.pdb</ProgramDatabaseFile>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(Configuration)\vs2010\cximagecrt.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<PostBuildEvent>
<ProjectName>ImageLib_jasper</ProjectName>
<ProjectGuid>{3843C3D4-E5A6-4030-87EC-E7EE57242106}</ProjectGuid>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_DEBUG;WIN32;_LIB;JAS_WIN_MSVC_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;JAS_WIN_MSVC_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\jasper.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
<WarningLevel>Level2</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;WIN32;_LIB;JAS_WIN_MSVC_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_LIB;JAS_WIN_MSVC_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\jasper.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
<WarningLevel>Level2</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="bmp\bmp_cod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="bmp\bmp_dec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="bmp\bmp_enc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_cm.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_debug.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_getopt.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_icc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_iccdata.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_image.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_init.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_malloc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_seq.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_stream.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_string.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_tvp.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="base\jas_version.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jp2\jp2_cod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jp2\jp2_dec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jp2\jp2_enc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_bs.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_cs.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_dec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_enc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_math.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_mct.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_mqcod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_mqdec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_mqenc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_qmfb.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_t1cod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_t1dec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_t1enc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_t2cod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_t2dec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_t2enc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_tagtree.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_tsfb.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpc\jpc_util.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpg\jpg_dummy.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jpg\jpg_val.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="mif\mif_cod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pgx\pgx_cod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pgx\pgx_dec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pgx\pgx_enc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pnm\pnm_cod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pnm\pnm_dec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pnm\pnm_enc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="ras\ras_cod.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="ras\ras_dec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="ras\ras_enc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="bmp\bmp_cod.c" />
+ <ClCompile Include="bmp\bmp_dec.c" />
+ <ClCompile Include="bmp\bmp_enc.c" />
+ <ClCompile Include="base\jas_cm.c" />
+ <ClCompile Include="base\jas_debug.c" />
+ <ClCompile Include="base\jas_getopt.c" />
+ <ClCompile Include="base\jas_icc.c" />
+ <ClCompile Include="base\jas_iccdata.c" />
+ <ClCompile Include="base\jas_image.c" />
+ <ClCompile Include="base\jas_init.c" />
+ <ClCompile Include="base\jas_malloc.c" />
+ <ClCompile Include="base\jas_seq.c" />
+ <ClCompile Include="base\jas_stream.c" />
+ <ClCompile Include="base\jas_string.c" />
+ <ClCompile Include="base\jas_tvp.c" />
+ <ClCompile Include="base\jas_version.c" />
+ <ClCompile Include="jp2\jp2_cod.c" />
+ <ClCompile Include="jp2\jp2_dec.c" />
+ <ClCompile Include="jp2\jp2_enc.c" />
+ <ClCompile Include="jpc\jpc_bs.c" />
+ <ClCompile Include="jpc\jpc_cs.c" />
+ <ClCompile Include="jpc\jpc_dec.c" />
+ <ClCompile Include="jpc\jpc_enc.c" />
+ <ClCompile Include="jpc\jpc_math.c" />
+ <ClCompile Include="jpc\jpc_mct.c" />
+ <ClCompile Include="jpc\jpc_mqcod.c" />
+ <ClCompile Include="jpc\jpc_mqdec.c" />
+ <ClCompile Include="jpc\jpc_mqenc.c" />
+ <ClCompile Include="jpc\jpc_qmfb.c" />
+ <ClCompile Include="jpc\jpc_t1cod.c" />
+ <ClCompile Include="jpc\jpc_t1dec.c" />
+ <ClCompile Include="jpc\jpc_t1enc.c" />
+ <ClCompile Include="jpc\jpc_t2cod.c" />
+ <ClCompile Include="jpc\jpc_t2dec.c" />
+ <ClCompile Include="jpc\jpc_t2enc.c" />
+ <ClCompile Include="jpc\jpc_tagtree.c" />
+ <ClCompile Include="jpc\jpc_tsfb.c" />
+ <ClCompile Include="jpc\jpc_util.c" />
+ <ClCompile Include="jpg\jpg_dummy.c" />
+ <ClCompile Include="jpg\jpg_val.c" />
+ <ClCompile Include="mif\mif_cod.c" />
+ <ClCompile Include="pgx\pgx_cod.c" />
+ <ClCompile Include="pgx\pgx_dec.c" />
+ <ClCompile Include="pgx\pgx_enc.c" />
+ <ClCompile Include="pnm\pnm_cod.c" />
+ <ClCompile Include="pnm\pnm_dec.c" />
+ <ClCompile Include="pnm\pnm_enc.c" />
+ <ClCompile Include="ras\ras_cod.c" />
+ <ClCompile Include="ras\ras_dec.c" />
+ <ClCompile Include="ras\ras_enc.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="bmp\bmp_cod.h" />
<ProjectName>ImageLib_jbig</ProjectName>
<ProjectGuid>{88E7E431-3752-4D58-BCD2-A7E6A1B74247}</ProjectGuid>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\jbig.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\jbig.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="jbig.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="jbig_tab.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="jbig.c" />
+ <ClCompile Include="jbig_tab.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="jbig.h" />
<ProjectGuid>{145287C8-24EA-42FE-8D7D-C13D5E4B054C}</ProjectGuid>
<Keyword>MFCProj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\jpeg.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\jpeg.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<Culture>0x0809</Culture>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="Jcapimin.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcapistd.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jccoefct.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jccolor.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcdctmgr.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jchuff.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcinit.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcmainct.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcmarker.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcmaster.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcomapi.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcparam.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcphuff.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcprepct.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jcsample.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jctrans.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdapimin.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdapistd.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdatadst.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdatasrc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdcoefct.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdcolor.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jddctmgr.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdhuff.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdinput.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdmainct.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdmarker.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdmaster.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdmerge.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdphuff.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdpostct.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdsample.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jdtrans.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jerror.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jfdctflt.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jfdctfst.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jfdctint.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jidctflt.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jidctfst.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jidctint.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jidctred.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jmemmgr.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jmemnobs.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jquant1.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jquant2.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Jutils.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="Jcapimin.c" />
+ <ClCompile Include="Jcapistd.c" />
+ <ClCompile Include="Jccoefct.c" />
+ <ClCompile Include="Jccolor.c" />
+ <ClCompile Include="Jcdctmgr.c" />
+ <ClCompile Include="Jchuff.c" />
+ <ClCompile Include="Jcinit.c" />
+ <ClCompile Include="Jcmainct.c" />
+ <ClCompile Include="Jcmarker.c" />
+ <ClCompile Include="Jcmaster.c" />
+ <ClCompile Include="Jcomapi.c" />
+ <ClCompile Include="Jcparam.c" />
+ <ClCompile Include="Jcphuff.c" />
+ <ClCompile Include="Jcprepct.c" />
+ <ClCompile Include="Jcsample.c" />
+ <ClCompile Include="Jctrans.c" />
+ <ClCompile Include="Jdapimin.c" />
+ <ClCompile Include="Jdapistd.c" />
+ <ClCompile Include="Jdatadst.c" />
+ <ClCompile Include="Jdatasrc.c" />
+ <ClCompile Include="Jdcoefct.c" />
+ <ClCompile Include="Jdcolor.c" />
+ <ClCompile Include="Jddctmgr.c" />
+ <ClCompile Include="Jdhuff.c" />
+ <ClCompile Include="Jdinput.c" />
+ <ClCompile Include="Jdmainct.c" />
+ <ClCompile Include="Jdmarker.c" />
+ <ClCompile Include="Jdmaster.c" />
+ <ClCompile Include="Jdmerge.c" />
+ <ClCompile Include="Jdphuff.c" />
+ <ClCompile Include="Jdpostct.c" />
+ <ClCompile Include="Jdsample.c" />
+ <ClCompile Include="Jdtrans.c" />
+ <ClCompile Include="Jerror.c" />
+ <ClCompile Include="Jfdctflt.c" />
+ <ClCompile Include="Jfdctfst.c" />
+ <ClCompile Include="Jfdctint.c" />
+ <ClCompile Include="Jidctflt.c" />
+ <ClCompile Include="Jidctfst.c" />
+ <ClCompile Include="Jidctint.c" />
+ <ClCompile Include="Jidctred.c" />
+ <ClCompile Include="Jmemmgr.c" />
+ <ClCompile Include="Jmemnobs.c" />
+ <ClCompile Include="Jquant1.c" />
+ <ClCompile Include="Jquant2.c" />
+ <ClCompile Include="Jutils.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Jchuff.h" />
<ProjectGuid>{783701E9-4A65-4505-97B0-39E580AA680D}</ProjectGuid>
<Keyword>MFCProj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\mng.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\mng.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="libmng_callback_xs.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_chunk_descr.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_chunk_io.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_chunk_prc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_chunk_xs.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_cms.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_display.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_dither.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_error.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_filter.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_hlapi.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_jpeg.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_object_prc.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_pixels.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_prop_xs.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_read.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_trace.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_write.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="libmng_zlib.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;MNG_SUPPORT_DISPLAY;MNG_SUPPORT_READ;MNG_SUPPORT_WRITE;MNG_ACCESS_CHUNKS;MNG_STORE_CHUNKS;_CRT_SECURE_NO_DEPRECATE;MNG_ERROR_TELLTALE</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="libmng_callback_xs.c" />
+ <ClCompile Include="libmng_chunk_descr.c" />
+ <ClCompile Include="libmng_chunk_io.c" />
+ <ClCompile Include="libmng_chunk_prc.c" />
+ <ClCompile Include="libmng_chunk_xs.c" />
+ <ClCompile Include="libmng_cms.c" />
+ <ClCompile Include="libmng_display.c" />
+ <ClCompile Include="libmng_dither.c" />
+ <ClCompile Include="libmng_error.c" />
+ <ClCompile Include="libmng_filter.c" />
+ <ClCompile Include="libmng_hlapi.c" />
+ <ClCompile Include="libmng_jpeg.c" />
+ <ClCompile Include="libmng_object_prc.c" />
+ <ClCompile Include="libmng_pixels.c" />
+ <ClCompile Include="libmng_prop_xs.c" />
+ <ClCompile Include="libmng_read.c" />
+ <ClCompile Include="libmng_trace.c" />
+ <ClCompile Include="libmng_write.c" />
+ <ClCompile Include="libmng_zlib.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="libmng_chunk_descr.h" />
<ProjectGuid>{44BF83C4-F73A-4093-A29A-11B9016318C4}</ProjectGuid>
<Keyword>MFCProj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\zlib;..\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\png.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\zlib;..\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\png.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<Culture>0x0809</Culture>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="png.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngerror.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngget.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngmem.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngpread.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngread.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngrio.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngrtran.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngrutil.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngset.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngtrans.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngvcrd.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngwio.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngwrite.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngwtran.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="pngwutil.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="png.c" />
+ <ClCompile Include="pngerror.c" />
+ <ClCompile Include="pngget.c" />
+ <ClCompile Include="pngmem.c" />
+ <ClCompile Include="pngpread.c" />
+ <ClCompile Include="pngread.c" />
+ <ClCompile Include="pngrio.c" />
+ <ClCompile Include="pngrtran.c" />
+ <ClCompile Include="pngrutil.c" />
+ <ClCompile Include="pngset.c" />
+ <ClCompile Include="pngtrans.c" />
+ <ClCompile Include="pngvcrd.c" />
+ <ClCompile Include="pngwio.c" />
+ <ClCompile Include="pngwrite.c" />
+ <ClCompile Include="pngwtran.c" />
+ <ClCompile Include="pngwutil.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="png.h" />
<ProjectName>ImageLib_libdcr</ProjectName>
<ProjectGuid>{8E5F7DBE-2E8B-4FD2-BFFE-1960CE7EDC09}</ProjectGuid>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\libdcr.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\libdcr.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="libdcr.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="libdcr.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="libdcr.h" />
<ProjectGuid>{8735F1ED-317D-4F7A-A512-B2BF9DAEA25A}</ProjectGuid>
<Keyword>MFCProj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\zlib;..\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\Tiff.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>Default</CompileAs>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\zlib;..\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\Tiff.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<CompileAs>Default</CompileAs>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="fax3sm_winnt.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_aux.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_close.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_codec.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_compress.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_dir.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_dirinfo.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_dirread.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_dirwrite.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_dumpmode.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_error.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_fax3.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_flush.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_getimage.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_jpeg.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_luv.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_lzw.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_next.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_ojpeg.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_open.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_packbits.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_pixarlog.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_predict.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_print.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_read.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_strip.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_swab.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_thunder.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_tile.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_version.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_warning.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_write.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="tif_zip.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MinSpace</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="fax3sm_winnt.c" />
+ <ClCompile Include="tif_aux.c" />
+ <ClCompile Include="tif_close.c" />
+ <ClCompile Include="tif_codec.c" />
+ <ClCompile Include="tif_compress.c" />
+ <ClCompile Include="tif_dir.c" />
+ <ClCompile Include="tif_dirinfo.c" />
+ <ClCompile Include="tif_dirread.c" />
+ <ClCompile Include="tif_dirwrite.c" />
+ <ClCompile Include="tif_dumpmode.c" />
+ <ClCompile Include="tif_error.c" />
+ <ClCompile Include="tif_fax3.c" />
+ <ClCompile Include="tif_flush.c" />
+ <ClCompile Include="tif_getimage.c" />
+ <ClCompile Include="tif_jpeg.c" />
+ <ClCompile Include="tif_luv.c" />
+ <ClCompile Include="tif_lzw.c" />
+ <ClCompile Include="tif_next.c" />
+ <ClCompile Include="tif_ojpeg.c" />
+ <ClCompile Include="tif_open.c" />
+ <ClCompile Include="tif_packbits.c" />
+ <ClCompile Include="tif_pixarlog.c" />
+ <ClCompile Include="tif_predict.c" />
+ <ClCompile Include="tif_print.c" />
+ <ClCompile Include="tif_read.c" />
+ <ClCompile Include="tif_strip.c" />
+ <ClCompile Include="tif_swab.c" />
+ <ClCompile Include="tif_thunder.c" />
+ <ClCompile Include="tif_tile.c" />
+ <ClCompile Include="tif_version.c" />
+ <ClCompile Include="tif_warning.c" />
+ <ClCompile Include="tif_write.c" />
+ <ClCompile Include="tif_zip.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="t4.h" />
<RootNamespace>ImageLib_zlib</RootNamespace>
<Keyword>MFCProj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\zlib.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\zlib.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<Culture>0x0809</Culture>
</ResourceCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="adler32.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="compress.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="crc32.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="deflate.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="gzio.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="infback.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="inffast.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="inflate.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="inftrees.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="trees.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="uncompr.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="zutil.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="adler32.c" />
+ <ClCompile Include="compress.c" />
+ <ClCompile Include="crc32.c" />
+ <ClCompile Include="deflate.c" />
+ <ClCompile Include="gzio.c" />
+ <ClCompile Include="infback.c" />
+ <ClCompile Include="inffast.c" />
+ <ClCompile Include="inflate.c" />
+ <ClCompile Include="inftrees.c" />
+ <ClCompile Include="trees.c" />
+ <ClCompile Include="uncompr.c" />
+ <ClCompile Include="zutil.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="crc32.h" />
<RootNamespace>libenca_win32</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <WholeProgramOptimization>false</WholeProgramOptimization>
<AdditionalIncludeDirectories>.\;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PreprocessorDefinitions>_LIB;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Multithreaded|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Singlethreaded|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Singlethreaded|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Multithreaded|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<ProjectGuid>{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
+ </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_HAS_ITERATOR_DEBUGGING=0;NOMINMAX;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;NOMINMAX;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
</ClCompile>
<Lib>
<OutputFile>$(TargetPath)</OutputFile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_HAS_ITERATOR_DEBUGGING=0;NOMINMAX;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;NOMINMAX;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Lib>
<OutputFile>$(TargetPath)</OutputFile>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
<ProjectGuid>{DD4818AE-7E35-40B7-A6A0-0FF83AA1C916}</ProjectGuid>
<Keyword>XboxProj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>_DEBUG;_WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <SmallerTypeCheck>true</SmallerTypeCheck>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <CompileAs>Default</CompileAs>
+ <SmallerTypeCheck>true</SmallerTypeCheck>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
- <PreprocessorDefinitions>NDEBUG;_WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>false</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <RuntimeTypeInfo>true</RuntimeTypeInfo>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>
- </DebugInformationFormat>
+ <RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<RootNamespace>libXDAAP</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetFileName)</OutputFile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>
- </DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetFileName)</OutputFile>
<RootNamespace>libexif_dll</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release (DLL)|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (DLL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DLL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug (DLL)|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug (DLL)|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug (DLL)|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release (DLL)|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release (DLL)|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release (DLL)|Win32'">false</LinkIncremental>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release (DLL)|Win32'">libexif</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug (DLL)|Win32'">libexif</TargetName>
<CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Release (DLL)|Win32'">Build</CustomBuildAfterTargets>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DLL)|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
<ImportLibrary>$(TargetName).lib</ImportLibrary>
</Link>
<CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release (DLL)|Win32'">
<ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
- <RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>
<RootNamespace>hdhomerun</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(ProjectName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(ProjectName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_USRDLL;DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>CompileAsCpp</CompileAs>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <ExceptionHandling>Sync</ExceptionHandling>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
<ImportLibrary>$(OutDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<CustomBuildStep>
<Command>copy /B /Y "$(TargetPath)" "$(SolutionDir)..\..\system\$(TargetFileName)"</Command>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_USRDLL;DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsCpp</CompileAs>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
<ImportLibrary>$(OutDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<CustomBuildStep>
<Command>copy /B /Y "$(TargetPath)" "$(SolutionDir)..\..\system\$(TargetFileName)"</Command>
<RootNamespace>libhts</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Lib>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>MaxSpeed</Optimization>
- <IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>
</ExceptionHandling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Lib>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<ProjectGuid>{AF6C8945-5DDC-4F62-A48C-86B11B7ED996}</ProjectGuid>
<RootNamespace>libmad_dll</RootNamespace>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>FPM_DEFAULT;_LIB;HAVE_CONFIG_H;ASO_ZEROCHECK;WIN32;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>FPM_DEFAULT;_LIB;HAVE_CONFIG_H;ASO_ZEROCHECK;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\libmad.pch</PrecompiledHeaderOutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <MinimalRebuild>true</MinimalRebuild>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>FPM_INTEL;_LIB;HAVE_CONFIG_H;ASO_ZEROCHECK;WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>FPM_INTEL;_LIB;HAVE_CONFIG_H;ASO_ZEROCHECK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeaderOutputFile>$(Configuration)\vs2010\libmad.pch</PrecompiledHeaderOutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(TargetName).lib</ImportLibrary>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
<PostBuildEvent>
<Command>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="..\bit.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\decoder.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\fixed.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\frame.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\huffman.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\layer12.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\layer3.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\stream.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\synth.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\timer.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\version.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="..\bit.c" />
+ <ClCompile Include="..\decoder.c" />
+ <ClCompile Include="..\fixed.c" />
+ <ClCompile Include="..\frame.c" />
+ <ClCompile Include="..\huffman.c" />
+ <ClCompile Include="..\layer12.c" />
+ <ClCompile Include="..\layer3.c" />
+ <ClCompile Include="..\stream.c" />
+ <ClCompile Include="..\synth.c" />
+ <ClCompile Include="..\timer.c" />
+ <ClCompile Include="..\version.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\bit.h" />
<RootNamespace>libmodplug_2008</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>%(RootDir)%(Directory)\libmodplug;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;MSC_VER;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <AdditionalIncludeDirectories>$(ProjectDir)\src;$(ProjectDir)\src\libmodplug;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;MSC_VER=_MSC_VER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>%(RootDir)%(Directory)\libmodplug;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;MSC_VER;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
+ <AdditionalIncludeDirectories>$(ProjectDir)\src;$(ProjectDir)\src\libmodplug;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;MSC_VER=_MSC_VER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<ModuleDefinitionFile>libmodplug.def</ModuleDefinitionFile>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\system\players\paplayer\$(TargetFileName)"</Command>
<ClCompile Include="src\sndmix.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="src\libmodplug\it_defs.h" />
+ <ClInclude Include="src\libmodplug\sndfile.h" />
+ <ClInclude Include="src\libmodplug\stdafx.h" />
<ClInclude Include="src\load_pat.h" />
<ClInclude Include="src\modplug.h" />
<ClInclude Include="src\tables.h" />
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="src\fastmix.cpp" />
+ <ClCompile Include="src\load_669.cpp" />
+ <ClCompile Include="src\load_abc.cpp" />
+ <ClCompile Include="src\load_amf.cpp" />
+ <ClCompile Include="src\load_ams.cpp" />
+ <ClCompile Include="src\load_dbm.cpp" />
+ <ClCompile Include="src\load_dmf.cpp" />
+ <ClCompile Include="src\load_dsm.cpp" />
+ <ClCompile Include="src\load_far.cpp" />
+ <ClCompile Include="src\load_it.cpp" />
+ <ClCompile Include="src\load_j2b.cpp" />
+ <ClCompile Include="src\load_mdl.cpp" />
+ <ClCompile Include="src\load_med.cpp" />
+ <ClCompile Include="src\load_mid.cpp" />
+ <ClCompile Include="src\load_mod.cpp" />
+ <ClCompile Include="src\load_mt2.cpp" />
+ <ClCompile Include="src\load_mtm.cpp" />
+ <ClCompile Include="src\load_okt.cpp" />
+ <ClCompile Include="src\load_pat.cpp" />
+ <ClCompile Include="src\load_psm.cpp" />
+ <ClCompile Include="src\load_ptm.cpp" />
+ <ClCompile Include="src\load_s3m.cpp" />
+ <ClCompile Include="src\load_stm.cpp" />
+ <ClCompile Include="src\load_ult.cpp" />
+ <ClCompile Include="src\load_umx.cpp" />
+ <ClCompile Include="src\load_wav.cpp" />
+ <ClCompile Include="src\load_xm.cpp" />
+ <ClCompile Include="src\mmcmp.cpp" />
+ <ClCompile Include="src\modplug.cpp" />
+ <ClCompile Include="src\snd_dsp.cpp" />
+ <ClCompile Include="src\snd_flt.cpp" />
+ <ClCompile Include="src\snd_fx.cpp" />
+ <ClCompile Include="src\sndfile.cpp" />
+ <ClCompile Include="src\sndmix.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="src\load_pat.h" />
+ <ClInclude Include="src\modplug.h" />
+ <ClInclude Include="src\tables.h" />
+ <ClInclude Include="src\libmodplug\it_defs.h">
+ <Filter>Headers</Filter>
+ </ClInclude>
+ <ClInclude Include="src\libmodplug\sndfile.h">
+ <Filter>Headers</Filter>
+ </ClInclude>
+ <ClInclude Include="src\libmodplug\stdafx.h">
+ <Filter>Headers</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="libmodplug.def" />
+ </ItemGroup>
+ <ItemGroup>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{5de0bc09-eb6a-4d23-98ec-4856dbb232a7}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+</Project>
\ No newline at end of file
<ProjectGuid>{FB3AB83A-C37A-4636-87FD-827F8506A8FC}</ProjectGuid>
<RootNamespace>libsidplay</RootNamespace>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
+ <CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
</HeaderFileName>
</Midl>
<ClCompile>
- <Optimization>MaxSpeed</Optimization>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>../../../builders/resid-builder/include/sidplay/builders;../../include;../../include/sidplay;../../../resid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>DLL_EXPORT;HAVE_MSWINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<PrecompiledHeader>
</PrecompiledHeader>
<PrecompiledHeaderOutputFile>$(OutDir)libsidplay.pch</PrecompiledHeaderOutputFile>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DisableSpecificWarnings>4231;4355;4910;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
</ResourceCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<ProgramDatabaseFile>.\Release/libsidplay2.pdb</ProgramDatabaseFile>
- <SubSystem>NotSet</SubSystem>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
- <NoEntryPoint>false</NoEntryPoint>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)libsidplay2.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>
</HeaderFileName>
</Midl>
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../../builders/resid-builder/include/sidplay/builders;../../include;../../include/sidplay;../../../resid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>DLL_EXPORT;HAVE_MSWINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
<PrecompiledHeaderOutputFile>$(OutDir)libsidplay.pch</PrecompiledHeaderOutputFile>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4231;4355;4910;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <MinimalRebuild>true</MinimalRebuild>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <ExceptionHandling>Sync</ExceptionHandling>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>.\Debug/libsidplay2.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)libsidplay2.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>
<ClInclude Include="..\..\include\sidplay\sidusage.h" />
</ItemGroup>
<ItemGroup>
- <ClCompile Include="..\..\src\mos6510\mos6510.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\mos6526\mos6526.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\mos656x\mos656x.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\sid6526\sid6526.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\sidtune\IconInfo.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\sidtune\InfoFile.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\sidtune\MUS.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="..\..\src\mos6510\mos6510.cpp" />
+ <ClCompile Include="..\..\src\mos6526\mos6526.cpp" />
+ <ClCompile Include="..\..\src\mos656x\mos656x.cpp" />
+ <ClCompile Include="..\..\src\sid6526\sid6526.cpp" />
+ <ClCompile Include="..\..\src\sidtune\IconInfo.cpp" />
+ <ClCompile Include="..\..\src\sidtune\InfoFile.cpp" />
+ <ClCompile Include="..\..\src\sidtune\MUS.cpp" />
<ClCompile Include="..\..\src\sidtune\p00.cpp" />
- <ClCompile Include="..\..\src\sidtune\PP20.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\sidtune\PRG.CPP">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\sidtune\PSID.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\sidtune\SidTune.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\sidtune\SidTuneTools.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\xsid\xsid.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\config.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="..\..\src\sidtune\PP20.cpp" />
+ <ClCompile Include="..\..\src\sidtune\PRG.CPP" />
+ <ClCompile Include="..\..\src\sidtune\PSID.cpp" />
+ <ClCompile Include="..\..\src\sidtune\SidTune.cpp" />
+ <ClCompile Include="..\..\src\sidtune\SidTuneTools.cpp" />
+ <ClCompile Include="..\..\src\xsid\xsid.cpp" />
+ <ClCompile Include="..\..\src\config.cpp" />
<ClCompile Include="..\..\..\resid\envelope.cc" />
- <ClCompile Include="..\..\src\event.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="..\..\src\event.cpp" />
<ClCompile Include="..\..\..\resid\extfilt.cc" />
<ClCompile Include="..\..\..\resid\filter.cc" />
- <ClCompile Include="..\..\src\mixer.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\player.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="..\..\src\mixer.cpp" />
+ <ClCompile Include="..\..\src\player.cpp" />
<ClCompile Include="..\..\..\resid\pot.cc" />
- <ClCompile Include="..\..\src\psiddrv.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="..\..\src\reloc65.c">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="..\..\src\psiddrv.cpp" />
+ <ClCompile Include="..\..\src\reloc65.c" />
<ClCompile Include="..\..\..\builders\resid-builder\src\resid-builder.cpp" />
<ClCompile Include="..\..\..\builders\resid-builder\src\resid.cpp" />
<ClCompile Include="..\..\..\resid\sid.cc" />
- <ClCompile Include="..\..\src\sidplay2.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;DLL_EXPORT;HAVE_MSWINDOWS</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="..\..\src\sidplay2.cpp" />
<ClCompile Include="..\..\..\resid\version.cc" />
<ClCompile Include="..\..\..\resid\voice.cc" />
<ClCompile Include="..\..\..\resid\wave.cc" />
<ProjectGuid>{6A8518C3-D81A-4428-BD7F-C37933088AC1}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;SQUISH_USE_SSE=2;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <PreprocessorDefinitions>_LIB;SQUISH_USE_SSE=2;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;SQUISH_USE_SSE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <PreprocessorDefinitions>_LIB;SQUISH_USE_SSE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <Optimization>Full</Optimization>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<RootNamespace>NoseFartXBMC</RootNamespace>
<Keyword>ManagedCProj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <PreprocessorDefinitions>WIN32;_DEBUG;LITTLE_ENDIAN;NSF_PLAYER;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <DisableLanguageExtensions>false</DisableLanguageExtensions>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>LITTLE_ENDIAN;NSF_PLAYER;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AssemblyDebug>true</AssemblyDebug>
<ProgramDatabaseFile>$(TargetName).pdb</ProgramDatabaseFile>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;LITTLE_ENDIAN;NSF_PLAYER;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>false</MinimalRebuild>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>LITTLE_ENDIAN;NSF_PLAYER;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetName).pdb</ProgramDatabaseFile>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
<ProjectGuid>{D9885434-4B9D-41FB-B5FC-5E89D41AEFF0}</ProjectGuid>
<RootNamespace>libStSoundLibrary_dll</RootNamespace>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>
</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4018;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <Optimization>MaxSpeed</Optimization>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>
</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>
</PrecompiledHeader>
<AssemblerListingLocation>$(Configuration)\vs2010\</AssemblerListingLocation>
<ObjectFileName>$(Configuration)\vs2010\</ObjectFileName>
<ProgramDataBaseFileName>$(Configuration)\vs2010\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<DisableSpecificWarnings>4018;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="Depacker.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="digidrum.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="Depacker.cpp" />
+ <ClCompile Include="digidrum.cpp" />
<ClCompile Include="XBMCYM.cpp" />
- <ClCompile Include="Ym2149Ex.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="Ymload.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="YmMusic.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="YmUserInterface.cpp">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <ClCompile Include="LZH\LZHXLIB.C">
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
- <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
+ <ClCompile Include="Ym2149Ex.cpp" />
+ <ClCompile Include="Ymload.cpp" />
+ <ClCompile Include="YmMusic.cpp" />
+ <ClCompile Include="YmUserInterface.cpp" />
+ <ClCompile Include="LZH\LZHXLIB.C" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="LZH\LZH.H" />
<RootNamespace>libvgmstream_dll</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\ext_includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;WIN32_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PreprocessorDefinitions>_USRDLL;WIN32_EXPORTS;_CRT_SECURE_NO_WARNINGS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4267;4018;4244;4312;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)\$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\ext_includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WIN32_EXPORTS;_CRT_SECURE_NO_WARNINGS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PreprocessorDefinitions>_USRDLL;WIN32_EXPORTS;_CRT_SECURE_NO_WARNINGS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4267;4018;4244;4312;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)\$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<PostBuildEvent>
<Command>
<RootNamespace>libadpcm_dll</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4244;4267;4311;4312;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<ResourceCompile>
<ResourceOutputFileName>
</ResourceCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>adpcm.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4244;4267;4311;4312;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <Optimization>Full</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
</ClCompile>
<ResourceCompile>
<ResourceOutputFileName>
</ResourceCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<ProfileGuidedDatabase>
</ProfileGuidedDatabase>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<PostBuildEvent>
<Command>
<RootNamespace>UnrarXLib</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
- <Optimization>Full</Optimization>
- <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\..\xbmc;..\..\xbmc\win32\;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;NOMINMAX;NDEBUG;WIN32;_LIB;_XBMC;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NOMINMAX;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>rar.hpp</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>
- </DebugInformationFormat>
<DisableSpecificWarnings>4800;4018;4146;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\xbmc;..\..\xbmc\win32\;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;NOMINMAX;WIN32;_DEBUG;_LIB;_XBMC;_USE_32BIT_TIME_T;HAS_DX;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <MinimalRebuild>false</MinimalRebuild>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>NOMINMAX;_LIB;_USE_32BIT_TIME_T;HAS_DX;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>rar.hpp</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4800;4018;4146;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<Lib>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
- <Optimization>Full</Optimization>
- <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\..\xbmc;..\..\xbmc\win32\;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;NOMINMAX;NDEBUG;WIN32;_LIB;_XBMC;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>NOMINMAX;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>rar.hpp</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>
- </DebugInformationFormat>
<DisableSpecificWarnings>4800;4018;4146;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(ProjectName).lib</OutputFile>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\xbmc;..\..\xbmc\win32\;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;NOMINMAX;WIN32;_DEBUG;_LIB;_XBMC;_USE_32BIT_TIME_T;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <MinimalRebuild>false</MinimalRebuild>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>NOMINMAX;_LIB;_USE_32BIT_TIME_T;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>rar.hpp</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4800;4018;4146;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<Lib>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets" />
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <IncludePath>$(SolutionDir)\..\BuildDependencies\include;$(SolutionDir)\..\BuildDependencies\include\python;$(IncludePath)</IncludePath>
- </PropertyGroup>
- <PropertyGroup>
- <LibraryPath>$(SolutionDir)\..\BuildDependencies\lib;$(LibraryPath)</LibraryPath>
- <ExecutablePath>$(SolutionDir)\..\..\tools\win32buildtools;$(ExecutablePath)</ExecutablePath>
- </PropertyGroup>
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Label="Configuration">
+ <UseOfMfc>false</UseOfMfc>
+ <UseOfAtl>false</UseOfAtl>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros" />
+
+ <!-- Common configuration settings -->
+ <PropertyGroup>
+ <IncludePath>$(SolutionDir)\..\BuildDependencies\include;$(SolutionDir)\..\BuildDependencies\include\python;$(IncludePath)</IncludePath>
+ <LibraryPath>$(SolutionDir)\..\BuildDependencies\lib;$(LibraryPath)</LibraryPath>
+ <ExecutablePath>$(SolutionDir)\..\..\tools\win32buildtools;$(ExecutablePath)</ExecutablePath>
+ <LocalDebuggerEnvironment>XBMC_HOME=$(SolutionDir)..\..
PATH=$(SolutionDir)..\Win32BuildSetup\dependencies;%PATH%</LocalDebuggerEnvironment>
+ </PropertyGroup>
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <MinimalRebuild>false</MinimalRebuild>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <WarningLevel>Level3</WarningLevel>
+ <ShowIncludes>false</ShowIncludes>
+ <BrowseInformation>false</BrowseInformation>
+ <ErrorReporting>Queue</ErrorReporting>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <LargeAddressAware>true</LargeAddressAware>
+ <TargetMachine>MachineX86</TargetMachine>
+ <LinkErrorReporting>QueueForNextLogin</LinkErrorReporting>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <!-- "Debug" specific settings -->
+ <PropertyGroup Condition="'$(UseDebugLibraries)'=='true'">
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(UseDebugLibraries)'=='true'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <OmitFramePointers>false</OmitFramePointers>
+ <PreprocessorDefinitions>_DEBUG;TARGET_WINDOWS;_WINDOWS;WIN32;_XBMC;_WIN32_WINNT=0x0600;NTDDI_VERSION=0x06000000;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary Condition="'$(ConfigurationType)'=='Application'">MultiThreadedDebug</RuntimeLibrary>
+ <RuntimeLibrary Condition="'$(ConfigurationType)'=='StaticLibrary'">MultiThreadedDebug</RuntimeLibrary>
+ <RuntimeLibrary Condition="'$(ConfigurationType)'=='DynamicLibrary'">MultiThreadedDebugDLL</RuntimeLibrary>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <!-- "Release" specific settings -->
+ <PropertyGroup Condition="'$(UseDebugLibraries)'!='true'">
+ <LinkIncremental>false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(UseDebugLibraries)'!='true'">
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <OmitFramePointers>true</OmitFramePointers>
+ <PreprocessorDefinitions>NDEBUG;TARGET_WINDOWS;_WINDOWS;WIN32;_XBMC;_WIN32_WINNT=0x0600;NTDDI_VERSION=0x06000000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary Condition="'$(ConfigurationType)'=='Application'">MultiThreaded</RuntimeLibrary>
+ <RuntimeLibrary Condition="'$(ConfigurationType)'=='StaticLibrary'">MultiThreaded</RuntimeLibrary>
+ <RuntimeLibrary Condition="'$(ConfigurationType)'=='DynamicLibrary'">MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </ClCompile>
+ <Link>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ </Link>
+ <Lib Condition="'$(ConfigurationType)'=='StaticLibrary'">
+ <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemGroup />
+</Project>
<RootNamespace>XBMC_PC</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
- <PropertyGroup>
- <LocalDebuggerEnvironment>XBMC_HOME=$(SolutionDir)..\..
PATH=$(SolutionDir)..\Win32BuildSetup\dependencies;%PATH%</LocalDebuggerEnvironment>
- </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Testsuite|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">XBMC\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">XBMC\$(Configuration)\objs\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">XBMC\$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug Testsuite|Win32'">XBMC\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">XBMC\$(Configuration)\objs\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug Testsuite|Win32'">XBMC\$(Configuration)\objs\</IntDir>
- <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">false</IgnoreImportLibrary>
- <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug Testsuite|Win32'">false</IgnoreImportLibrary>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">true</LinkIncremental>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug Testsuite|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">XBMC\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">XBMC\$(Configuration)\objs\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">XBMC\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">XBMC\$(Configuration)\objs\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">true</LinkIncremental>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug Testsuite|Win32'">$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">$(DXSDK_DIR)Lib\x86;$(LibraryPath)</LibraryPath>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>Default</InlineFunctionExpansion>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;..\..\addons\library.xbmc.gui;..\..\addons\library.xbmc.addon;..\..\addons\library.xbmc.pvr;..\..\addons\library.xbmc.codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;NDEBUG;_WIN32_WINNT=0x0600;NTDDI_VERSION=0x06000000;NOMINMAX;_USE_32BIT_TIME_T;HAS_GL;__STDC_CONSTANT_MACROS;XMD_H;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>false</StringPooling>
- <MinimalRebuild>false</MinimalRebuild>
+ <PreprocessorDefinitions>NOMINMAX;_USE_32BIT_TIME_T;HAS_GL;__STDC_CONSTANT_MACROS;XMD_H;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
- <FunctionLevelLinking>false</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>
</DebugInformationFormat>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ForcedIncludeFiles>pch.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
- <ShowIncludes>false</ShowIncludes>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>$(IntDir)\a\a\%(RelativeDir)</ObjectFileName>
</ClCompile>
<Link>
- <AdditionalOptions>/MACHINE:I386 /IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>DInput8.lib;DSound.lib;winmm.lib;Mpr.lib;Iphlpapi.lib;PowrProf.lib;setupapi.lib;dwmapi.lib;yajl.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)XBMC.exe</OutputFile>
<IgnoreSpecificDefaultLibraries>libc;msvcrt;libci;msvcprt;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<DelayLoadDLLs>dnssd.dll;dwmapi.dll;libmicrohttpd-5.dll;ssh.dll;sqlite3.dll;libsamplerate-0.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)XBMC.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <LargeAddressAware>true</LargeAddressAware>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<Manifest>
<AdditionalManifestFiles>VC90.CRT.x86.manifest;win81.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Platinum\Source\Extras;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;..\..\addons\library.xbmc.gui;..\..\addons\library.xbmc.addon;..\..\addons\library.xbmc.pvr;..\..\addons\library.xbmc.codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;_DEBUG;_WIN32_WINNT=0x0600;NTDDI_VERSION=0x06000000;NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;D3D_DEBUG_INFO;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>false</MinimalRebuild>
+ <PreprocessorDefinitions>NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;D3D_DEBUG_INFO;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ForcedIncludeFiles>pch.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
- <ShowIncludes>false</ShowIncludes>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ObjectFileName>$(IntDir)\a\a\%(RelativeDir)</ObjectFileName>
</ClCompile>
<Link>
- <AdditionalOptions>/MACHINE:I386 /IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>D3dx9.lib;DInput8.lib;DSound.lib;winmm.lib;Mpr.lib;Iphlpapi.lib;PowrProf.lib;setupapi.lib;dwmapi.lib;yajl.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)XBMC.exe</OutputFile>
<IgnoreSpecificDefaultLibraries>libc;msvcrt;libcmt;msvcrtd;msvcprtd;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ModuleDefinitionFile>
</ModuleDefinitionFile>
<DelayLoadDLLs>dnssd.dll;dwmapi.dll;libmicrohttpd-5.dll;ssh.dll;sqlite3.dll;libsamplerate-0.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)XBMC.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <LargeAddressAware>true</LargeAddressAware>
<EntryPointSymbol>
</EntryPointSymbol>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<Manifest>
<AdditionalManifestFiles>VC90.CRT.x86.manifest;win81.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Testsuite|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\liblame\include;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Platinum\Source\Extras;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\lib\gtest\include;..\..\xbmc\cores\AudioEngine\;..\..\xbmc\cores\AudioEngine\Utils\;..\..\addons\library.xbmc.gui;..\..\addons\library.xbmc.addon;..\..\addons\library.xbmc.pvr;..\..\addons\library.xbmc.codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0600;NTDDI_VERSION=0x06000000;NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;D3D_DEBUG_INFO;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>false</MinimalRebuild>
+ <PreprocessorDefinitions>_CONSOLE;NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;D3D_DEBUG_INFO;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ForcedIncludeFiles>pch.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
- <ShowIncludes>false</ShowIncludes>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>$(IntDir)\a\a\%(RelativeDir)</ObjectFileName>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
- <AdditionalOptions>/MACHINE:I386 /IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>D3dx9.lib;DInput8.lib;DSound.lib;winmm.lib;ws2_32.lib;Mpr.lib;Iphlpapi.lib;PowrProf.lib;setupapi.lib;dwmapi.lib;strmiids.lib;dxguid.lib;mfuuid.lib;comctl32.lib;yajl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)xbmc-test.exe</OutputFile>
<AdditionalLibraryDirectories>
<ModuleDefinitionFile>
</ModuleDefinitionFile>
<DelayLoadDLLs>dnssd.dll;dwmapi.dll;libmicrohttpd-5.dll;ssh.dll;sqlite3.dll;libsamplerate-0.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)XBMC.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
- <LargeAddressAware>true</LargeAddressAware>
<EntryPointSymbol>
</EntryPointSymbol>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<Manifest>
<AdditionalManifestFiles>VC90.CRT.x86.manifest;win81.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Platinum\Source\Extras;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;..\..\addons\library.xbmc.gui;..\..\addons\library.xbmc.addon;..\..\addons\library.xbmc.pvr;..\..\addons\library.xbmc.codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;NDEBUG;_WIN32_WINNT=0x0600;NTDDI_VERSION=0x06000000;NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;__STDC_CONSTANT_MACROS;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>false</StringPooling>
- <MinimalRebuild>false</MinimalRebuild>
+ <PreprocessorDefinitions>NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;__STDC_CONSTANT_MACROS;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ForcedIncludeFiles>pch.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
- <ShowIncludes>false</ShowIncludes>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>$(IntDir)\a\a\%(RelativeDir)</ObjectFileName>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<Link>
- <AdditionalOptions>/MACHINE:I386 /IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>D3dx9.lib;DInput8.lib;DSound.lib;winmm.lib;Mpr.lib;Iphlpapi.lib;PowrProf.lib;setupapi.lib;dwmapi.lib;yajl.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)XBMC.exe</OutputFile>
<IgnoreSpecificDefaultLibraries>libc;msvcrt;libci;msvcprt;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<DelayLoadDLLs>dnssd.dll;dwmapi.dll;libmicrohttpd-5.dll;ssh.dll;sqlite3.dll;libsamplerate-0.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)XBMC.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <LargeAddressAware>true</LargeAddressAware>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<Manifest>
<AdditionalManifestFiles>VC90.CRT.x86.manifest;win81.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;..\..\addons\library.xbmc.gui;..\..\addons\library.xbmc.addon;..\..\addons\library.xbmc.pvr;..\..\addons\library.xbmc.codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;_DEBUG;_WIN32_WINNT=0x0600;NTDDI_VERSION=0x06000000;NOMINMAX;_USE_32BIT_TIME_T;HAS_GL;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>false</MinimalRebuild>
+ <PreprocessorDefinitions>NOMINMAX;_USE_32BIT_TIME_T;HAS_GL;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Async</ExceptionHandling>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ForcedIncludeFiles>pch.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
- <ShowIncludes>false</ShowIncludes>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
<ObjectFileName>$(IntDir)\a\a\%(RelativeDir)</ObjectFileName>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
- <AdditionalOptions>/MACHINE:I386 /IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions>/IGNORE:4089 /ignore:4254 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>DInput8.lib;DSound.lib;winmm.lib;Mpr.lib;Iphlpapi.lib;PowrProf.lib;setupapi.lib;dwmapi.lib;yajl.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)XBMC.exe</OutputFile>
<IgnoreSpecificDefaultLibraries>libc;msvcrt;libcmt;msvcrtd;msvcprtd;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ModuleDefinitionFile>
</ModuleDefinitionFile>
<DelayLoadDLLs>dnssd.dll;dwmapi.dll;libmicrohttpd-5.dll;ssh.dll;sqlite3.dll;libsamplerate-0.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)XBMC.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <LargeAddressAware>true</LargeAddressAware>
<EntryPointSymbol>
</EntryPointSymbol>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<Manifest>
<AdditionalManifestFiles>VC90.CRT.x86.manifest;win81.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\liblame\include;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;..\..\addons\library.xbmc.gui;..\..\addons\library.xbmc.addon;..\..\addons\library.xbmc.pvr;..\..\addons\library.xbmc.codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDInputStreams\DVDInputStreamBluray.cpp" />
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDInputStreams\DVDInputStreamPVRManager.cpp" />
<ClCompile Include="..\..\xbmc\cores\paplayer\PCMCodec.cpp" />
+ <ClCompile Include="..\..\xbmc\cores\VideoRenderers\OverlayRendererGUI.cpp" />
<ClCompile Include="..\..\xbmc\cores\VideoRenderers\RenderCapture.cpp" />
<ClCompile Include="..\..\xbmc\cores\VideoRenderers\VideoShaders\WinVideoFilter.cpp" />
<ClCompile Include="..\..\xbmc\CueDocument.cpp" />
<ClCompile Include="..\..\xbmc\interfaces\json-rpc\PlaylistOperations.cpp" />
<ClCompile Include="..\..\xbmc\interfaces\json-rpc\ProfilesOperations.cpp" />
<ClCompile Include="..\..\xbmc\interfaces\json-rpc\PVROperations.cpp" />
+ <ClCompile Include="..\..\xbmc\interfaces\json-rpc\SettingsOperations.cpp" />
<ClCompile Include="..\..\xbmc\interfaces\json-rpc\SystemOperations.cpp" />
<ClCompile Include="..\..\xbmc\interfaces\json-rpc\VideoLibrary.cpp" />
<ClCompile Include="..\..\xbmc\interfaces\json-rpc\XBMCOperations.cpp" />
</ClCompile>
<ClCompile Include="..\..\xbmc\interfaces\python\XBPython.cpp" />
<ClCompile Include="..\..\xbmc\LangInfo.cpp" />
+ <ClCompile Include="..\..\xbmc\listproviders\IListProvider.cpp" />
+ <ClCompile Include="..\..\xbmc\listproviders\DirectoryProvider.cpp" />
+ <ClCompile Include="..\..\xbmc\listproviders\StaticProvider.cpp" />
<ClCompile Include="..\..\xbmc\MediaSource.cpp" />
<ClCompile Include="..\..\xbmc\music\Album.cpp" />
<ClCompile Include="..\..\xbmc\music\Artist.cpp" />
<ClCompile Include="..\..\xbmc\settings\dialogs\GUIDialogContentSettings.cpp" />
<ClCompile Include="..\..\xbmc\settings\dialogs\GUIDialogSettings.cpp" />
<ClCompile Include="..\..\xbmc\settings\DisplaySettings.cpp" />
- <ClCompile Include="..\..\xbmc\settings\ISetting.cpp" />
- <ClCompile Include="..\..\xbmc\settings\ISettingControl.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\ISetting.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\ISettingControl.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\Setting.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingCategoryAccess.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingConditions.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingDependency.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingRequirement.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingSection.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingsManager.cpp" />
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingUpdate.cpp" />
<ClCompile Include="..\..\xbmc\settings\MediaSettings.cpp" />
<ClCompile Include="..\..\xbmc\settings\MediaSourceSettings.cpp" />
- <ClCompile Include="..\..\xbmc\settings\Setting.cpp" />
<ClCompile Include="..\..\xbmc\settings\SettingAddon.cpp" />
- <ClCompile Include="..\..\xbmc\settings\SettingCategoryAccess.cpp" />
- <ClCompile Include="..\..\xbmc\settings\SettingConditions.cpp" />
<ClCompile Include="..\..\xbmc\settings\SettingControl.cpp" />
- <ClCompile Include="..\..\xbmc\settings\SettingDependency.cpp" />
<ClCompile Include="..\..\xbmc\settings\SettingPath.cpp" />
<ClCompile Include="..\..\xbmc\settings\Settings.cpp" />
- <ClCompile Include="..\..\xbmc\settings\SettingSection.cpp" />
- <ClCompile Include="..\..\xbmc\settings\SettingsManager.cpp" />
- <ClCompile Include="..\..\xbmc\settings\SettingUpdate.cpp" />
- <ClCompile Include="..\..\xbmc\settings\SettingRequirement.cpp" />
<ClCompile Include="..\..\xbmc\settings\SkinSettings.cpp" />
<ClCompile Include="..\..\xbmc\settings\VideoSettings.cpp" />
<ClCompile Include="..\..\xbmc\settings\windows\GUIControlSettings.cpp" />
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">true</ExcludedFromBuild>
</ClCompile>
- <ClCompile Include="..\..\xbmc\test\TestTextureCache.cpp">
+ <ClCompile Include="..\..\xbmc\test\TestTextureUtils.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">true</ExcludedFromBuild>
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDDemuxers\DVDDemuxBXA.h" />
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDDemuxers\DVDDemuxCDDA.h" />
<ClInclude Include="..\..\xbmc\cores\paplayer\PCMCodec.h" />
+ <ClInclude Include="..\..\xbmc\cores\VideoRenderers\OverlayRendererGUI.h" />
<ClInclude Include="..\..\xbmc\dialogs\GUIDialogKeyboardGeneric.h" />
<ClInclude Include="..\..\xbmc\DbUrl.h" />
<ClInclude Include="..\..\xbmc\dialogs\GUIDialogMediaFilter.h" />
<ClInclude Include="..\..\xbmc\interfaces\json-rpc\FavouritesOperations.h" />
<ClInclude Include="..\..\xbmc\interfaces\json-rpc\ProfilesOperations.h" />
<ClInclude Include="..\..\xbmc\interfaces\json-rpc\PVROperations.h" />
+ <ClInclude Include="..\..\xbmc\interfaces\json-rpc\SettingsOperations.h" />
<ClInclude Include="..\..\xbmc\interfaces\legacy\Addon.h" />
<ClInclude Include="..\..\xbmc\interfaces\legacy\AddonCallback.h" />
<ClInclude Include="..\..\xbmc\interfaces\legacy\AddonClass.h" />
<ClInclude Include="..\..\xbmc\settings\dialogs\GUIDialogContentSettings.h" />
<ClInclude Include="..\..\xbmc\settings\dialogs\GUIDialogSettings.h" />
<ClInclude Include="..\..\xbmc\settings\DisplaySettings.h" />
- <ClInclude Include="..\..\xbmc\settings\ISetting.h" />
- <ClInclude Include="..\..\xbmc\settings\ISettingCallback.h" />
- <ClInclude Include="..\..\xbmc\settings\ISettingControl.h" />
- <ClInclude Include="..\..\xbmc\settings\ISettingControlCreator.h" />
- <ClInclude Include="..\..\xbmc\settings\ISettingCreator.h" />
- <ClInclude Include="..\..\xbmc\settings\ISettingsHandler.h" />
- <ClInclude Include="..\..\xbmc\settings\ISubSettings.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\ISetting.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingCallback.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingControl.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingControlCreator.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingCreator.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingsHandler.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\ISubSettings.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\Setting.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingCategoryAccess.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingConditions.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingDefinitions.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingDependency.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingRequirement.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingSection.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingsManager.h" />
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingUpdate.h" />
<ClInclude Include="..\..\xbmc\settings\MediaSettings.h" />
<ClInclude Include="..\..\xbmc\settings\MediaSourceSettings.h" />
- <ClInclude Include="..\..\xbmc\settings\Setting.h" />
<ClInclude Include="..\..\xbmc\settings\SettingAddon.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingCategoryAccess.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingConditions.h" />
<ClInclude Include="..\..\xbmc\settings\SettingControl.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingDefinitions.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingDependency.h" />
<ClInclude Include="..\..\xbmc\settings\SettingPath.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingSection.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingsManager.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingUpdate.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingRequirement.h" />
<ClInclude Include="..\..\xbmc\settings\SkinSettings.h" />
<ClInclude Include="..\..\xbmc\settings\windows\GUIControlSettings.h" />
<ClInclude Include="..\..\xbmc\settings\windows\GUIWindowSettings.h" />
<ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogAudioSubtitleSettings.cpp" />
<ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogFileStacking.cpp" />
<ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogFullScreenInfo.cpp" />
+ <ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogSubtitles.cpp" />
<ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogTeletext.cpp" />
<ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogVideoBookmarks.cpp" />
<ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogVideoInfo.cpp" />
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDMessageTracker.cpp" />
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDOverlayContainer.cpp" />
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDOverlayRenderer.cpp" />
- <ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDPerformanceCounter.cpp" />
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDPlayer.cpp" />
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDPlayerAudio.cpp" />
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDPlayerSubtitle.cpp" />
<ClInclude Include="..\..\xbmc\interfaces\json-rpc\TextureOperations.h" />
<ClInclude Include="..\..\xbmc\IProgressCallback.h" />
<ClInclude Include="..\..\xbmc\LangInfo.h" />
+ <ClInclude Include="..\..\xbmc\listproviders\IListProvider.h" />
+ <ClInclude Include="..\..\xbmc\listproviders\DirectoryProvider.h" />
+ <ClInclude Include="..\..\xbmc\listproviders\StaticProvider.h" />
<ClInclude Include="..\..\xbmc\MediaSource.h" />
<ClInclude Include="..\..\xbmc\music\Album.h" />
<ClInclude Include="..\..\xbmc\music\Artist.h" />
<ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogAudioSubtitleSettings.h" />
<ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogFileStacking.h" />
<ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogFullScreenInfo.h" />
+ <ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogSubtitles.h" />
<ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogTeletext.h" />
<ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogVideoBookmarks.h" />
<ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogVideoInfo.h" />
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDMessageTracker.h" />
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDOverlayContainer.h" />
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDOverlayRenderer.h" />
- <ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDPerformanceCounter.h" />
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDPlayer.h" />
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDPlayerAudio.h" />
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDPlayerSubtitle.h" />
<Filter Include="cores\AudioEngine\Engines\ActiveAE">
<UniqueIdentifier>{27f2c647-7b5f-4c49-b2e7-22bf360e58ab}</UniqueIdentifier>
</Filter>
+ <Filter Include="listproviders">
+ <UniqueIdentifier>{1dfaf73b-2e8d-49d2-87c1-07b1ac203ba0}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="settings\lib">
+ <UniqueIdentifier>{4de9ae04-448d-4ebe-bde5-5ec2a61270c0}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\xbmc\win32\pch.cpp">
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDOverlayRenderer.cpp">
<Filter>cores\dvdplayer</Filter>
</ClCompile>
- <ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDPerformanceCounter.cpp">
- <Filter>cores\dvdplayer</Filter>
- </ClCompile>
<ClCompile Include="..\..\xbmc\cores\dvdplayer\DVDPlayer.cpp">
<Filter>cores\dvdplayer</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogFullScreenInfo.cpp">
<Filter>video\dialogs</Filter>
</ClCompile>
+ <ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogSubtitles.cpp">
+ <Filter>video\dialogs</Filter>
+ </ClCompile>
<ClCompile Include="..\..\xbmc\video\dialogs\GUIDialogTeletext.cpp">
<Filter>video\dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\test\TestFileItem.cpp">
<Filter>test</Filter>
</ClCompile>
- <ClCompile Include="..\..\xbmc\test\TestTextureCache.cpp">
+ <ClCompile Include="..\..\xbmc\test\TestTextureUtils.cpp">
<Filter>test</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\interfaces\json-rpc\PVROperations.cpp">
<ClCompile Include="..\..\xbmc\settings\windows\GUIControlSettings.cpp">
<Filter>settings\windows</Filter>
</ClCompile>
- <ClCompile Include="..\..\xbmc\settings\ISetting.cpp">
- <Filter>settings</Filter>
- </ClCompile>
- <ClCompile Include="..\..\xbmc\settings\Setting.cpp">
- <Filter>settings</Filter>
- </ClCompile>
- <ClCompile Include="..\..\xbmc\settings\SettingCategoryAccess.cpp">
- <Filter>settings</Filter>
- </ClCompile>
- <ClCompile Include="..\..\xbmc\settings\SettingConditions.cpp">
- <Filter>settings</Filter>
- </ClCompile>
<ClCompile Include="..\..\xbmc\settings\SettingControl.cpp">
<Filter>settings</Filter>
</ClCompile>
- <ClCompile Include="..\..\xbmc\settings\SettingDependency.cpp">
- <Filter>settings</Filter>
- </ClCompile>
<ClCompile Include="..\..\xbmc\network\NetworkServices.cpp">
<Filter>network</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\utils\BooleanLogic.cpp">
<Filter>utils</Filter>
</ClCompile>
- <ClCompile Include="..\..\xbmc\settings\SettingUpdate.cpp">
- <Filter>settings</Filter>
- </ClCompile>
- <ClCompile Include="..\..\xbmc\settings\SettingsManager.cpp">
- <Filter>settings</Filter>
- </ClCompile>
<ClCompile Include="..\..\xbmc\settings\SettingAddon.cpp">
<Filter>settings</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\settings\SettingPath.cpp">
<Filter>settings</Filter>
</ClCompile>
- <ClCompile Include="..\..\xbmc\settings\SettingSection.cpp">
- <Filter>settings</Filter>
- </ClCompile>
<ClCompile Include="..\..\xbmc\interfaces\json-rpc\FavouritesOperations.cpp">
<Filter>interfaces\json-rpc</Filter>
</ClCompile>
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\ApplicationPlayer.cpp" />
- <ClCompile Include="..\..\xbmc\settings\SettingRequirement.cpp">
- <Filter>settings</Filter>
- </ClCompile>
<ClCompile Include="..\..\xbmc\interfaces\python\AddonPythonInvoker.cpp">
<Filter>interfaces\python</Filter>
</ClCompile>
<Filter>playlists</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\FileItemListModification.cpp" />
- <ClCompile Include="..\..\xbmc\settings\ISettingControl.cpp">
- <Filter>settings</Filter>
+ <ClCompile Include="..\..\xbmc\settings\lib\ISettingControl.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\ISetting.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\Setting.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingCategoryAccess.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingConditions.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingDependency.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingRequirement.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingSection.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingsManager.cpp">
+ <Filter>settings\lib</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\settings\lib\SettingUpdate.cpp">
+ <Filter>settings\lib</Filter>
</ClCompile>
<ClCompile Include="..\..\xbmc\utils\CharsetDetection.cpp">
<Filter>utils</Filter>
</ClCompile>
+ <ClCompile Include="..\..\xbmc\cores\VideoRenderers\OverlayRendererGUI.cpp">
+ <Filter>cores\VideoRenderers</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\interfaces\json-rpc\SettingsOperations.cpp">
+ <Filter>interfaces\json-rpc</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\listproviders\IListProvider.cpp">
+ <Filter>listproviders</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\listproviders\DirectoryProvider.cpp">
+ <Filter>listproviders</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\xbmc\listproviders\StaticProvider.cpp">
+ <Filter>listproviders</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\xbmc\win32\pch.h">
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDOverlayRenderer.h">
<Filter>cores\dvdplayer</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDPerformanceCounter.h">
- <Filter>cores\dvdplayer</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\cores\dvdplayer\DVDPlayer.h">
<Filter>cores\dvdplayer</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogFullScreenInfo.h">
<Filter>video\dialogs</Filter>
</ClInclude>
+ <ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogSubtitles.h">
+ <Filter>video\dialogs</Filter>
+ </ClInclude>
<ClInclude Include="..\..\xbmc\video\dialogs\GUIDialogTeletext.h">
<Filter>video\dialogs</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\utils\RssManager.h">
<Filter>utils</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\settings\ISettingsHandler.h">
- <Filter>settings</Filter>
- </ClInclude>
- <ClInclude Include="..\..\xbmc\settings\ISubSettings.h">
- <Filter>settings</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\settings\SkinSettings.h">
<Filter>settings</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\settings\windows\GUIControlSettings.h">
<Filter>settings\windows</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\settings\ISetting.h">
- <Filter>settings</Filter>
- </ClInclude>
- <ClInclude Include="..\..\xbmc\settings\ISettingCallback.h">
- <Filter>settings</Filter>
- </ClInclude>
- <ClInclude Include="..\..\xbmc\settings\Setting.h">
- <Filter>settings</Filter>
- </ClInclude>
- <ClInclude Include="..\..\xbmc\settings\SettingCategoryAccess.h">
- <Filter>settings</Filter>
- </ClInclude>
- <ClInclude Include="..\..\xbmc\settings\SettingConditions.h">
- <Filter>settings</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\settings\SettingControl.h">
<Filter>settings</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\settings\SettingDependency.h">
- <Filter>settings</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\network\NetworkServices.h">
<Filter>network</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\utils\IXmlDeserializable.h">
<Filter>utils</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\settings\SettingUpdate.h">
- <Filter>settings</Filter>
- </ClInclude>
- <ClInclude Include="..\..\xbmc\settings\SettingsManager.h">
- <Filter>settings</Filter>
- </ClInclude>
- <ClInclude Include="..\..\xbmc\settings\ISettingCreator.h">
- <Filter>settings</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\settings\SettingAddon.h">
<Filter>settings</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\settings\SettingPath.h">
<Filter>settings</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\settings\SettingSection.h">
- <Filter>settings</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\interfaces\json-rpc\FavouritesOperations.h">
<Filter>interfaces\json-rpc</Filter>
</ClInclude>
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\ApplicationPlayer.h" />
- <ClInclude Include="..\..\xbmc\settings\SettingRequirement.h">
- <Filter>settings</Filter>
- </ClInclude>
<ClInclude Include="..\..\xbmc\interfaces\python\AddonPythonInvoker.h">
<Filter>interfaces\python</Filter>
</ClInclude>
<Filter>playlists</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\FileItemListModification.h" />
- <ClInclude Include="..\..\xbmc\settings\ISettingControl.h">
- <Filter>settings</Filter>
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingControl.h">
+ <Filter>settings\lib</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\settings\ISettingControlCreator.h">
- <Filter>settings</Filter>
+ <ClInclude Include="..\..\xbmc\settings\lib\ISetting.h">
+ <Filter>settings\lib</Filter>
</ClInclude>
- <ClInclude Include="..\..\xbmc\settings\SettingDefinitions.h">
- <Filter>settings</Filter>
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingCallback.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingCreator.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingsHandler.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\ISubSettings.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\Setting.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingCategoryAccess.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingConditions.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingDependency.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingRequirement.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingSection.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingsManager.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingUpdate.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\SettingDefinitions.h">
+ <Filter>settings\lib</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\settings\lib\ISettingControlCreator.h">
+ <Filter>settings\lib</Filter>
</ClInclude>
<ClInclude Include="..\..\xbmc\utils\CharsetDetection.h">
<Filter>utils</Filter>
</ClInclude>
+ <ClInclude Include="..\..\xbmc\cores\VideoRenderers\OverlayRendererGUI.h">
+ <Filter>cores\VideoRenderers</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\interfaces\json-rpc\SettingsOperations.h">
+ <Filter>interfaces\json-rpc</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\listproviders\IListProvider.h">
+ <Filter>listproviders</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\listproviders\DirectoryProvider.h">
+ <Filter>listproviders</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\xbmc\listproviders\StaticProvider.h">
+ <Filter>listproviders</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\xbmc\win32\XBMC_PC.rc">
<RootNamespace>XbmcCommons</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\xbmc;..\..\xbmc\win32</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;NOMINMAX;WIN32;_DEBUG;_LIB;_XBMC;_USE_32BIT_TIME_T;HAS_DX;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <MinimalRebuild>false</MinimalRebuild>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <PreprocessorDefinitions>NOMINMAX;_LIB;_USE_32BIT_TIME_T;HAS_DX;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DisableSpecificWarnings>4800;4018;4146;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<Lib />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
- <Optimization>Full</Optimization>
- <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\..\xbmc;..\..\xbmc\win32</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;NOMINMAX;NDEBUG;WIN32;_LIB;_XBMC;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>NOMINMAX;_LIB;_USE_32BIT_TIME_T;HAS_DX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderFile>commons.hpp</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>
</DebugInformationFormat>
<DisableSpecificWarnings>4800;4018;4146;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<Lib />
- <Lib>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
- </Lib>
+ <Lib />
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<RootNamespace>XbmcCommons</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\xbmc;..\..\xbmc\win32</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;NOMINMAX;WIN32;_DEBUG;_LIB;_XBMC;_USE_32BIT_TIME_T;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <MinimalRebuild>false</MinimalRebuild>
- <BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <BufferSecurityCheck>true</BufferSecurityCheck>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <PreprocessorDefinitions>NOMINMAX;_LIB;_XBMC;_USE_32BIT_TIME_T;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DisableSpecificWarnings>4800;4018;4146;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ExceptionHandling>Async</ExceptionHandling>
</ClCompile>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
- <Optimization>Full</Optimization>
- <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\..\xbmc;..\..\xbmc\win32</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>TARGET_WINDOWS;NOMINMAX;WIN32;NDEBUG;_LIB;_XBMC;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>NOMINMAX;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderFile>commons.hpp</PrecompiledHeaderFile>
- <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>
</DebugInformationFormat>
<DisableSpecificWarnings>4800;4018;4146;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ExceptionHandling>Async</ExceptionHandling>
- <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)$(ProjectName).lib</OutputFile>
- <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<RootNamespace>libPlatinum</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Platinum\Source\Extras;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;NPT_CONFIG_ENABLE_LOGGING;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;NPT_CONFIG_ENABLE_LOGGING;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)libPlatinumd.lib</OutputFile>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Platinum\Source\Extras;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;NPT_CONFIG_ENABLE_LOGGING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PreprocessorDefinitions>_LIB;NPT_CONFIG_ENABLE_LOGGING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Lib>
<OutputFile>$(OutDir)libPlatinum.lib</OutputFile>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
SET TMP_DIR=%DEPS_DIR%\tmp
SET LIBNAME=xbmc-pvr-addons
-SET VERSION=18597fd733003e3a7edfedc284b36428c4b97647
+SET VERSION=54a6b9dfbf7b0f51902f9d4c69d83baa8e47d97a
SET SOURCE=%LIBNAME%
SET GIT_URL=git://github.com/opdenkamp/%LIBNAME%.git
SET SOURCE_DIR=%TMP_DIR%\%SOURCE%
<dependencies>
<dependency type="enable" setting="input.appleremotemode" operator="!is">0</dependency> <!-- APPLE_REMOTE_DISABLED -->
</dependencies>
+ <control type="toggle" />
</setting>
<setting id="input.appleremotesequencetime" type="integer" label="13603" help="36418">
<level>1</level>
<maximum>1000</maximum>
</constraints>
<dependencies>
- <dependency type="enable" id="input.appleremotemode">2</dependency> <!-- APPLE_REMOTE_UNIVERSAL -->
+ <dependency type="enable" setting="input.appleremotemode" operator="is">2</dependency> <!-- APPLE_REMOTE_UNIVERSAL -->
</dependencies>
<control type="spinner" format="string">
<formatlabel>14046</formatlabel>
</control>
</setting>
</group>
+ <group id="2">
+ <setting id="input.enablesystemkeys" type="boolean" label="35103" help="37019">
+ <visible>false</visible>
+ <default>yes</default>
+ <control type="toggle" />
+ </setting>
+ </group>
</category>
</section>
</settings>
<setting id="videoplayer.usevda" type="boolean" label="13429" help="36160">
<level>2</level>
<default>true</default>
+ <control type="toggle" />
</setting>
</group>
</category>
<default>true</default>
<control type="toggle" />
</setting>
+ <setting id="videoplayer.useframemtdec" type="boolean" label="13440" help="36423">
+ <level>2</level>
+ <default>false</default>
+ <control type="toggle" />
+ </setting>
<setting id="videoplayer.adjustrefreshrate" type="integer" label="170" help="36164">
<level>2</level>
<default>0</default> <!-- ADJUST_REFRESHRATE_OFF -->
</setting>
</group>
<group id="2">
+ <setting id="subtitles.savetomoviefolder" type="boolean" label="24115" help="24106">
+ <level>1</level>
+ <default>true</default>
+ <control type="toggle" />
+ </setting>
+ <setting id="subtitles.pauseonsearch" type="boolean" label="24105" help="">
+ <level>1</level>
+ <default>true</default>
+ <control type="toggle" />
+ </setting>
+ <setting id="subtitles.languages" type="list[string]" label="24111" help="24112">
+ <level>1</level>
+ <default>English</default>
+ <constraints>
+ <options>languages</options>
+ <delimiter>,</delimiter>
+ <minimum>1</minimum>
+ <maximum>3</maximum>
+ </constraints>
+ <control type="list" format="string">
+ <multiselect>true</multiselect>
+ </control>
+ </setting>
<setting id="subtitles.custompath" type="path" label="21366" help="36191">
<level>1</level>
<default></default>
</constraints>
<control type="spinner" format="string" />
</setting>
+ <setting id="subtitles.preferexternal" type="boolean" label="21600" help="21601">
+ <level>1</level>
+ <default>true</default>
+ <control type="toggle" />
+ </setting>
</group>
</category>
<category id="dvds" label="14087" help="36193">
libafpclient.so \
libplist.so libshairplay.so \
libxbogg.so libxbvorbis.so libxbvorbisfile.so libxbFLAC.so libxbmpeg2.so \
- libxbmpeg2convert.so libnfs.so libass.so
+ libxbmpeg2convert.so libnfs.so libass.so libbluray.so
PLATFORM_OBJS =
EXCLUDED_ADDONS = screensaver.rsxs.euphoria visualization.dxspectrum visualization.milkdrop visualization.projectm
--- /dev/null
+--- src/video/quartz/SDL_QuartzWindow.m.orig 2013-10-31 04:29:45.000000000 -0700
++++ src/video/quartz/SDL_QuartzWindow.m 2013-10-31 04:30:05.000000000 -0700
+@@ -87,7 +87,7 @@
+ SDL_VideoDevice *this = (SDL_VideoDevice*)current_video;
+
+ /* make sure pixels are fully opaque */
+- if (! ( SDL_VideoSurface->flags & SDL_OPENGL ) )
++ if ( SDL_VideoSurface && ! ( SDL_VideoSurface->flags & SDL_OPENGL ) )
+ QZ_SetPortAlphaOpaque ();
+
+ /* save current visible SDL surface */
cd $(PLATFORM); patch -p0 < ../01-SDL_SetWidthHeight.patch
cd $(PLATFORM); patch -p0 < ../02-OSX_interpretKeyEvents.patch
cd $(PLATFORM); patch -p0 < ../03-mavericks-compile.patch
+ cd $(PLATFORM); patch -p0 < ../04-fix_external_screen_crash.patch
cd $(PLATFORM); $(CONFIGURE)
$(LIBDYLIB): $(PLATFORM)
cp modules.setup $(PLATFORM)/Modules/Setup.dist
#Add -liconv as needed, and add the _scproxy module for darwin
+# disable locale altogether for Android
+ifeq ($(OS),android)
+ cd $(PLATFORM); sed -ie 's|_locale _localemodule.c -lintl|#_locale _localemodule.c -lintl|' Modules/Setup.dist
+else
cd $(PLATFORM); sed -ie 's|_locale _localemodule.c -lintl|_locale _localemodule.c -lintl $(LINK_ICONV) |' Modules/Setup.dist
+endif
ifeq ($(OS),osx)
echo "_scproxy \$$(srcdir)/Mac/Modules/_scproxy.c -framework SystemConfiguration -framework CoreFoundation" >> $(PLATFORM)/Modules/Setup.dist
endif
#DEPS= ../../Makefile.include Makefile
LIBNAME=xbmc-pvr-addons
-VERSION=18597fd733003e3a7edfedc284b36428c4b97647
+VERSION=54a6b9dfbf7b0f51902f9d4c69d83baa8e47d97a
GIT_DIR=$(TARBALLS_LOCATION)/$(LIBNAME).git
BASE_URL=git://github.com/opdenkamp/$(LIBNAME).git
DYLIB=$(PLATFORM)/addons/pvr.demo/.libs/libpvrdemo-addon.so
#include "dialogs/GUIDialogCache.h"
#include "dialogs/GUIDialogPlayEject.h"
#include "dialogs/GUIDialogMediaFilter.h"
+#include "video/dialogs/GUIDialogSubtitles.h"
#include "utils/XMLUtils.h"
#include "addons/AddonInstaller.h"
m_bPlaybackStarting = false;
m_ePlayState = PLAY_STATE_NONE;
m_skinReloading = false;
+ m_skinReverting = false;
m_loggingIn = false;
#ifdef HAS_GLX
g_windowManager.Add(new CGUIDialogPeripheralSettings);
g_windowManager.Add(new CGUIDialogMediaFilter);
+ g_windowManager.Add(new CGUIDialogSubtitles);
g_windowManager.Add(new CGUIWindowMusicPlayList);
g_windowManager.Add(new CGUIWindowMusicSongs);
if (settingId == "lookandfeel.skin" && CSettings::Get().GetString("lookandfeel.skintheme") != "SKINDEFAULT")
CSettings::Get().SetString("lookandfeel.skintheme", "SKINDEFAULT");
else
- CApplicationMessenger::Get().ExecBuiltIn("ReloadSkin");
+ {
+ std::string builtin("ReloadSkin");
+ if (settingId == "lookandfeel.skin" && !m_skinReverting)
+ builtin += "(confirm)";
+ CApplicationMessenger::Get().ExecBuiltIn(builtin);
+ }
}
else if (settingId == "lookandfeel.skintheme")
{
g_windowManager.SendMessage(GUI_MSG_NOTIFY_ALL, 0, 0, GUI_MSG_WINDOW_RESIZE);
else if (StringUtils::StartsWithNoCase(settingId, "audiooutput."))
{
+ // AE is master of audio settings and needs to be informed first
+ CAEFactory::OnSettingsChange(settingId);
+
if (settingId == "audiooutput.guisoundmode")
{
CAEFactory::SetSoundMode(((CSettingInt*)setting)->GetValue());
else if (settingId == "audiooutput.passthrough")
{
CApplicationMessenger::Get().MediaRestart(false);
- return;
}
-
- CAEFactory::OnSettingsChange(settingId);
}
else if (StringUtils::EqualsNoCase(settingId, "musicplayer.replaygaintype"))
m_replayGainSettings.iType = ((CSettingInt*)setting)->GetValue();
return true;
}
-void CApplication::ReloadSkin()
+void CApplication::ReloadSkin(bool confirm/*=false*/)
{
m_skinReloading = false;
+ std::string oldSkin = g_SkinInfo ? g_SkinInfo->ID() : "";
+
CGUIMessage msg(GUI_MSG_LOAD_SKIN, -1, g_windowManager.GetActiveWindow());
g_windowManager.SendMessage(msg);
pWindow->OnMessage(msg3);
}
}
+
+ if (!m_skinReverting && confirm)
+ {
+ bool cancelled;
+ if (!CGUIDialogYesNo::ShowAndGetInput(13123, 13111, -1, -1, -1, -1, cancelled, 10000))
+ {
+ m_skinReverting = true;
+ if (oldSkin.empty())
+ CSettings::Get().GetSetting("lookandfeel.skin")->Reset();
+ else
+ CSettings::Get().SetString("lookandfeel.skin", oldSkin);
+ }
+ }
+
+ m_skinReverting = false;
}
bool CApplication::Load(const TiXmlNode *settings)
// dont show GUI when playing full screen video
if (g_graphicsContext.IsFullScreenVideo())
{
+ g_graphicsContext.SetRenderingResolution(g_graphicsContext.GetVideoResolution(), false);
g_renderManager.Render(true, 0, 255);
// close window overlays
g_windowManager.Delete(WINDOW_DIALOG_ACCESS_POINTS);
g_windowManager.Delete(WINDOW_DIALOG_SLIDER);
g_windowManager.Delete(WINDOW_DIALOG_MEDIA_FILTER);
+ g_windowManager.Delete(WINDOW_DIALOG_SUBTITLES);
/* Delete PVR related windows and dialogs */
g_windowManager.Delete(WINDOW_PVR);
#include "cores/IPlayerCallback.h"
#include "cores/playercorefactory/PlayerCoreFactory.h"
#include "PlayListPlayer.h"
-#include "settings/ISettingsHandler.h"
-#include "settings/ISettingCallback.h"
-#include "settings/ISubSettings.h"
+#include "settings/lib/ISettingsHandler.h"
+#include "settings/lib/ISettingCallback.h"
+#include "settings/lib/ISubSettings.h"
#if !defined(TARGET_WINDOWS) && defined(HAS_DVD_DRIVE)
#include "storage/DetectDVDType.h"
#endif
void RestartApp();
void UnloadSkin(bool forReload = false);
bool LoadUserWindows();
- void ReloadSkin();
+ void ReloadSkin(bool confirm = false);
const CStdString& CurrentFile();
CFileItem& CurrentFileItem();
virtual bool OnMessage(CGUIMessage& message);
void LoadSkin(const boost::shared_ptr<ADDON::CSkinInfo>& skin);
bool m_skinReloading; // if true we disallow LoadSkin until ReloadSkin is called
+ bool m_skinReverting;
bool m_loggingIn;
player->GetGeneralInfo(strVideoInfo);
}
-bool CApplicationPlayer::GetCurrentSubtitle(CStdString& strSubtitle)
-{
- boost::shared_ptr<IPlayer> player = GetInternal();
- return (player && player->GetCurrentSubtitle(strSubtitle));
-}
-
int CApplicationPlayer::SeekChapter(int iChapter)
{
boost::shared_ptr<IPlayer> player = GetInternal();
void GetChapterName(CStdString& strChapterName);
void GetDeinterlaceMethods(std::vector<int> &deinterlaceMethods);
void GetDeinterlaceModes(std::vector<int> &deinterlaceModes);
- bool GetCurrentSubtitle(CStdString& strSubtitle);
void GetGeneralInfo( CStdString& strVideoInfo);
float GetPercentage() const;
int GetPictureHeight();
{ "actstreamprogrsignal", PVR_ACTUAL_STREAM_SIG_PROGR },
{ "actstreamprogrsnr", PVR_ACTUAL_STREAM_SNR_PROGR },
{ "actstreamisencrypted", PVR_ACTUAL_STREAM_ENCRYPTED },
- { "actstreamencryptionname", PVR_ACTUAL_STREAM_CRYPTION }};
+ { "actstreamencryptionname", PVR_ACTUAL_STREAM_CRYPTION },
+ { "actstreamservicename", PVR_ACTUAL_STREAM_SERVICE },
+ { "actstreammux", PVR_ACTUAL_STREAM_MUX },
+ { "actstreamprovidername", PVR_ACTUAL_STREAM_PROVIDER }};
const infomap slideshow[] = {{ "ispaused", SLIDESHOW_ISPAUSED },
{ "isactive", SLIDESHOW_ISACTIVE },
}
else if (cat.name == "playlist")
{
+ int ret = -1;
for (size_t i = 0; i < sizeof(playlist) / sizeof(infomap); i++)
{
if (prop.name == playlist[i].str)
- return playlist[i].val;
+ {
+ ret = playlist[i].val;
+ break;
+ }
+ }
+ if (ret >= 0)
+ {
+ if (prop.num_params() <= 0)
+ return ret;
+ else
+ {
+ int playlistid = PLAYLIST_NONE;
+ if (prop.param().Equals("video"))
+ playlistid = PLAYLIST_VIDEO;
+ else if (prop.param().Equals("music"))
+ playlistid = PLAYLIST_MUSIC;
+
+ if (playlistid > PLAYLIST_NONE)
+ return AddMultiInfo(GUIInfo(ret, playlistid));
+ }
}
}
else if (cat.name == "pvr")
case PVR_ACTUAL_STREAM_AUDIO_BR:
case PVR_ACTUAL_STREAM_DOLBY_BR:
case PVR_ACTUAL_STREAM_CRYPTION:
+ case PVR_ACTUAL_STREAM_SERVICE:
+ case PVR_ACTUAL_STREAM_MUX:
+ case PVR_ACTUAL_STREAM_PROVIDER:
g_PVRManager.TranslateCharInfo(info, strLabel);
break;
case WEATHER_CONDITIONS:
bReturn = (index >= 0 && index < g_playlistPlayer.GetPlaylist(PLAYLIST_MUSIC).size());
}
break;
+
+ case PLAYLIST_ISRANDOM:
+ {
+ int playlistid = info.GetData1();
+ if (playlistid > PLAYLIST_NONE)
+ bReturn = g_playlistPlayer.IsShuffled(playlistid);
+ }
+ break;
+
+ case PLAYLIST_ISREPEAT:
+ {
+ int playlistid = info.GetData1();
+ if (playlistid > PLAYLIST_NONE)
+ bReturn = g_playlistPlayer.GetRepeat(playlistid) == PLAYLIST::REPEAT_ALL;
+ }
+ break;
+
+ case PLAYLIST_ISREPEATONE:
+ {
+ int playlistid = info.GetData1();
+ if (playlistid > PLAYLIST_NONE)
+ bReturn = g_playlistPlayer.GetRepeat(playlistid) == PLAYLIST::REPEAT_ONE;
+ }
+ break;
}
}
return (info.m_info < 0) ? !bReturn : bReturn;
if (addon && info.m_info == SYSTEM_ADDON_VERSION)
return addon->Version().c_str();
}
+ else if (info.m_info == PLAYLIST_LENGTH ||
+ info.m_info == PLAYLIST_POSITION ||
+ info.m_info == PLAYLIST_RANDOM ||
+ info.m_info == PLAYLIST_REPEAT)
+ {
+ int playlistid = info.GetData1();
+ if (playlistid > PLAYLIST_NONE)
+ return GetPlaylistLabel(info.m_info, playlistid);
+ }
return StringUtils::EmptyString;
}
return GetMusicTagLabel(info.m_info, playlistItem.get());
}
-CStdString CGUIInfoManager::GetPlaylistLabel(int item) const
+CStdString CGUIInfoManager::GetPlaylistLabel(int item, int playlistid /* = PLAYLIST_NONE */) const
{
- if (!g_application.m_pPlayer->IsPlaying()) return "";
- int iPlaylist = g_playlistPlayer.GetCurrentPlaylist();
+ if (playlistid <= PLAYLIST_NONE && !g_application.m_pPlayer->IsPlaying())
+ return "";
+
+ int iPlaylist = playlistid == PLAYLIST_NONE ? g_playlistPlayer.GetCurrentPlaylist() : playlistid;
switch (item)
{
case PLAYLIST_LENGTH:
#define PVR_ACTUAL_STREAM_AUDIO_BR (PVR_STRINGS_START + 31)
#define PVR_ACTUAL_STREAM_DOLBY_BR (PVR_STRINGS_START + 32)
#define PVR_ACTUAL_STREAM_CRYPTION (PVR_STRINGS_START + 33)
-#define PVR_STRINGS_END PVR_ACTUAL_STREAM_CRYPTION
+#define PVR_ACTUAL_STREAM_SERVICE (PVR_STRINGS_START + 34)
+#define PVR_ACTUAL_STREAM_MUX (PVR_STRINGS_START + 35)
+#define PVR_ACTUAL_STREAM_PROVIDER (PVR_STRINGS_START + 36)
+#define PVR_STRINGS_END PVR_ACTUAL_STREAM_PROVIDER
#define WINDOW_PROPERTY 9993
#define WINDOW_IS_TOPMOST 9994
CStdString GetMusicLabel(int item);
CStdString GetMusicTagLabel(int info, const CFileItem *item);
CStdString GetVideoLabel(int item);
- CStdString GetPlaylistLabel(int item) const;
+ CStdString GetPlaylistLabel(int item, int playlistid = -1 /* PLAYLIST_NONE */) const;
CStdString GetMusicPartyModeLabel(int item);
const CStdString GetMusicPlaylistInfo(const GUIInfo& info);
CStdString GetPictureLabel(int item);
#include "profiles/dialogs/GUIDialogProfileSettings.h"
#include "Util.h"
#include "settings/MediaSourceSettings.h"
-#include "settings/Setting.h"
#include "settings/Settings.h"
#include "guilib/GUIWindowManager.h"
#include "FileItem.h"
#include <map>
#include <vector>
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "utils/StdString.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
class CFileItem;
class CMediaSource;
#include "guilib/LocalizeStrings.h"
#include "pvr/PVRManager.h"
#include "settings/AdvancedSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "utils/CharsetConverter.h"
#include "utils/log.h"
*
*/
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "utils/StdString.h"
#include <map>
// trim any non-alphanumeric char in the begining
std::string::iterator result = std::find_if(toParse.begin(), toParse.end(), ::isalnum);
+ std::string name;
if (result != toParse.end()) // if we have anything to parse
{
std::string inputString(result, toParse.end());
std::vector<std::string> tokens;
StringUtils::Tokenize(inputString, tokens, delimiters);
- std::string name;
for (std::vector<std::string>::iterator it = tokens.begin(); it != tokens.end(); ++it)
{
if (info.language.empty())
}
name += " " + (*it);
}
- StringUtils::Trim(name);
- info.name = StringUtils::RemoveDuplicatedSpacesAndTabs(name);
}
+ name += " ";
+ name += g_localizeStrings.Get(21602); // External
+ StringUtils::Trim(name);
+ info.name = StringUtils::RemoveDuplicatedSpacesAndTabs(name);
if (info.flag == 0x1111)
info.flag = CDemuxStream::FLAG_NONE;
{"xbmc.python.pluginsource", ADDON_PLUGIN, 24005, "" },
{"xbmc.python.script", ADDON_SCRIPT, 24009, "" },
{"xbmc.python.weather", ADDON_SCRIPT_WEATHER, 24027, "DefaultAddonWeather.png" },
- {"xbmc.python.subtitles", ADDON_SCRIPT_SUBTITLES, 24012, "DefaultAddonSubtitles.png" },
{"xbmc.python.lyrics", ADDON_SCRIPT_LYRICS, 24013, "DefaultAddonLyrics.png" },
{"xbmc.python.library", ADDON_SCRIPT_LIBRARY, 24014, "" },
{"xbmc.python.module", ADDON_SCRIPT_MODULE, 0, "" },
+ {"xbmc.subtitle.module", ADDON_SUBTITLE_MODULE, 24012, "DefaultAddonSubtitles.png" },
{"xbmc.gui.skin", ADDON_SKIN, 166, "DefaultAddonSkin.png" },
{"xbmc.gui.webinterface", ADDON_WEB_INTERFACE, 199, "DefaultAddonWebSkin.png" },
{"xbmc.addon.repository", ADDON_REPOSITORY, 24011, "DefaultAddonRepository.png" },
case ADDON_SCRIPT_LIBRARY:
case ADDON_SCRIPT_LYRICS:
case ADDON_SCRIPT_WEATHER:
- case ADDON_SCRIPT_SUBTITLES:
+ case ADDON_SUBTITLE_MODULE:
case ADDON_PLUGIN:
case ADDON_SERVICE:
ext = ADDON_PYTHON_EXT;
case ADDON_SCRIPT_LIBRARY:
case ADDON_SCRIPT_LYRICS:
case ADDON_SCRIPT_WEATHER:
- case ADDON_SCRIPT_SUBTITLES:
case ADDON_SCRIPT_MODULE:
+ case ADDON_SUBTITLE_MODULE:
case ADDON_SCRAPER_ALBUMS:
case ADDON_SCRAPER_ARTISTS:
case ADDON_SCRAPER_MOVIES:
starrating.Format("rating%d.png", addon->Stars());
pItem->SetProperty("Addon.StarRating",starrating);
pItem->SetProperty("Addon.Path", addon->Path());
- pItem->SetProperty("Addon.Broken", addon->Props().broken);
+ if (addon->Props().broken == "DEPSNOTMET")
+ pItem->SetProperty("Addon.Broken", g_localizeStrings.Get(24044));
+ else
+ pItem->SetProperty("Addon.Broken", addon->Props().broken);
std::map<CStdString,CStdString>::iterator it =
addon->Props().extrainfo.find("language");
if (it != addon->Props().extrainfo.end())
return AddonPtr(new CPluginSource(props));
case ADDON_SCRIPT_LIBRARY:
case ADDON_SCRIPT_LYRICS:
- case ADDON_SCRIPT_SUBTITLES:
case ADDON_SCRIPT_MODULE:
+ case ADDON_SUBTITLE_MODULE:
case ADDON_WEB_INTERFACE:
return AddonPtr(new CAddon(props));
case ADDON_SCRIPT_WEATHER:
case ADDON_SCRIPT_LIBRARY:
case ADDON_SCRIPT_LYRICS:
case ADDON_SCRIPT_WEATHER:
- case ADDON_SCRIPT_SUBTITLES:
case ADDON_SCRIPT_MODULE:
+ case ADDON_SUBTITLE_MODULE:
case ADDON_WEB_INTERFACE:
return AddonPtr(new CAddon(addonProps));
case ADDON_SERVICE:
OnInstall();
return true;
}
- else if (CGUIDialogYesNo::ShowAndGetInput(24037, 750, 0, 0))
+ else
{
OnUninstall();
return true;
Close();
}
-void CGUIDialogAddonInfo::OnUninstall()
+bool CGUIDialogAddonInfo::PromptIfDependency(int heading, int line2)
{
- if (!m_localAddon.get())
- return;
+ if (!m_localAddon)
+ return false;
- // ensure the addon is not a dependency of other installed addons
VECADDONS addons;
- CStdStringArray deps;
+ vector<string> deps;
CAddonMgr::Get().GetAllAddons(addons);
- for (VECADDONS::iterator it = addons.begin();
- it != addons.end();++it)
+ for (VECADDONS::const_iterator it = addons.begin();
+ it != addons.end();++it)
{
- if ((*it)->GetDeps().find(m_localAddon->ID()) != (*it)->GetDeps().end())
+ ADDONDEPS::const_iterator i = (*it)->GetDeps().find(m_localAddon->ID());
+ if (i != (*it)->GetDeps().end() && !i->second.second) // non-optional dependency
deps.push_back((*it)->Name());
}
- if (!CAddonInstaller::Get().CheckDependencies(m_localAddon) && deps.size())
+ if (!deps.empty())
{
- CStdString strLine0, strLine1;
- StringUtils::JoinString(deps, ", ", strLine1);
- strLine0.Format(g_localizeStrings.Get(24046), m_localAddon->Name().c_str());
- CGUIDialogOK::ShowAndGetInput(24037, strLine0, strLine1, 24047);
- return;
+ string line0 = StringUtils::Format(g_localizeStrings.Get(24046), m_localAddon->Name().c_str());
+ string line1 = StringUtils::Join(deps, ", ");
+ CGUIDialogOK::ShowAndGetInput(heading, line0, line1, line2);
+ return true;
}
+ return false;
+}
+
+void CGUIDialogAddonInfo::OnUninstall()
+{
+ if (!m_localAddon.get())
+ return;
+
+ // ensure the addon is not a dependency of other installed addons
+ if (PromptIfDependency(24037, 24047))
+ return;
+
+ // prompt user to be sure
+ if (CGUIDialogYesNo::ShowAndGetInput(24037, 750, 0, 0))
+ return;
// ensure the addon isn't disabled in our database
CAddonMgr::Get().DisableAddon(m_localAddon->ID(), false);
if (!m_localAddon.get())
return;
+ if (!enable && PromptIfDependency(24075, 24091))
+ return;
+
CAddonMgr::Get().DisableAddon(m_localAddon->ID(), !enable);
SetItem(m_item);
UpdateControls();
void OnChangeLog();
void OnRollback();
+ /*! \brief check if the add-on is a dependency of others, and if so prompt the user.
+ \param heading the label for the heading of the prompt dialog
+ \param line2 the action that could not be completed.
+ \return true if prompted, false otherwise.
+ */
+ bool PromptIfDependency(int heading, int line2);
+
CFileItemPtr m_item;
ADDON::AddonPtr m_addon;
ADDON::AddonPtr m_localAddon;
ADDON_PVRDLL,
ADDON_SCRIPT,
ADDON_SCRIPT_WEATHER,
- ADDON_SCRIPT_SUBTITLES,
+ ADDON_SUBTITLE_MODULE,
ADDON_SCRIPT_LYRICS,
ADDON_SCRAPER_ALBUMS,
ADDON_SCRAPER_ARTISTS,
break;
if (!CAddonInstaller::Get().CheckDependencies(addons[i]))
- addons[i]->Props().broken = g_localizeStrings.Get(24044);
+ addons[i]->Props().broken = "DEPSNOTMET";
// invalidate the art associated with this item
if (!addons[i]->Props().fanart.empty())
{
if (database.IsAddonBroken(addons[i]->ID()).IsEmpty())
{
+ std::string line = g_localizeStrings.Get(24096);
+ if (addons[i]->Props().broken == "DEPSNOTMET")
+ line = g_localizeStrings.Get(24104);
if (addon && CGUIDialogYesNo::ShowAndGetInput(addons[i]->Name(),
- g_localizeStrings.Get(24096),
+ line,
g_localizeStrings.Get(24097),
""))
CAddonMgr::Get().DisableAddon(addons[i]->ID());
#include "filesystem/File.h"
#include "filesystem/SpecialProtocol.h"
#include "guilib/WindowIDs.h"
-#include "settings/Setting.h"
#include "settings/Settings.h"
+#include "settings/lib/Setting.h"
#include "utils/URIUtils.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
void SetSpeed(int speed);
/*!
+ * Get actual playing time from addon. With timeshift enabled this is
+ * different to live.
+ * @return time as UTC
+ */
+ time_t GetPlayingTime();
+
+ /*!
+ * Get time of oldest packet in timeshift buffer
+ * @return time as UTC
+ */
+ time_t GetBufferTimeStart();
+
+ /*!
+ * Get time of latest packet in timeshift buffer
+ * @return time as UTC
+ */
+ time_t GetBufferTimeEnd();
+
+ /*!
* Called by XBMC to assign the function pointers of this add-on to pClient.
* @param pClient The struct to assign the function pointers to.
*/
pClient->DemuxAbort = DemuxAbort;
pClient->DemuxFlush = DemuxFlush;
pClient->DemuxRead = DemuxRead;
+
+ pClient->GetPlayingTime = GetPlayingTime;
+ pClient->GetBufferTimeStart = GetBufferTimeStart;
+ pClient->GetBufferTimeEnd = GetBufferTimeEnd;
};
};
#define PVR_STREAM_MAX_STREAMS 20
/* current PVR API version */
-#define XBMC_PVR_API_VERSION "1.8.1"
+#define XBMC_PVR_API_VERSION "1.9.0"
/* min. PVR API version */
-#define XBMC_PVR_MIN_API_VERSION "1.8.0"
+#define XBMC_PVR_MIN_API_VERSION "1.9.0"
#ifdef __cplusplus
extern "C" {
{
char strAdapterName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) name of the adapter that's being used */
char strAdapterStatus[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) status of the adapter that's being used */
+ char strServiceName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) name of the current service */
+ char strProviderName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) name of the current service's provider */
+ char strMuxName[PVR_ADDON_NAME_STRING_LENGTH]; /*!< @brief (optional) name of the current mux */
int iSNR; /*!< @brief (optional) signal/noise ratio */
int iSignal; /*!< @brief (optional) signal strength */
long iBER; /*!< @brief (optional) bit error rate */
bool (__cdecl* CanSeekStream)(void);
bool (__cdecl* SeekTime)(int, bool, double*);
void (__cdecl* SetSpeed)(int);
+ time_t (__cdecl* GetPlayingTime)(void);
+ time_t (__cdecl* GetBufferTimeStart)(void);
+ time_t (__cdecl* GetBufferTimeEnd)(void);
} PVRClient;
#ifdef __cplusplus
if (m_inputHandler->onJoyStickKeyEvent(event))
return true;
}
- if (source & AINPUT_SOURCE_CLASS_BUTTON)
- rtn = m_inputHandler->onKeyboardEvent(event);
+ rtn = m_inputHandler->onKeyboardEvent(event);
break;
case AINPUT_EVENT_TYPE_MOTION:
switch(source)
#if defined(TARGET_DARWIN)
#include "Engines/CoreAudio/CoreAudioAE.h"
- #include "settings/SettingsManager.h"
+ #include "settings/lib/SettingsManager.h"
#else
#include "Engines/ActiveAE/ActiveAE.h"
#endif
#endif
#include "guilib/LocalizeStrings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "utils/StringUtils.h"
if (sink == sinkList.begin())
firstDevice = sink->second;
-#if defined(TARGET_DARWIN)
- list.push_back(std::make_pair(sink->first, sink->first));
-#else
list.push_back(std::make_pair(sink->first, sink->second));
-#endif
if (StringUtils::EqualsNoCase(current, sink->second))
foundValue = true;
// consider user channel layout for those cases
// 1. input stream is multichannel
// 2. stereo upmix is selected
- // 3. already playing > 2 channels and "audiophile" is not set
- // this is the case if e.g. a stream changes config from 5.1 to 2.0
- // which would cause a short audio drop-out if we changed the sink
+ // 3. fixed mode
if ((format.m_channelLayout.Count() > 2) ||
settings.stereoupmix ||
- (settings.config == AE_CONFIG_FIXED) ||
- (m_stats.GetWaterLevel() > 0 && m_internalFormat.m_channelLayout.Count() > 2 && (settings.config != AE_CONFIG_MATCH)))
+ (settings.config == AE_CONFIG_FIXED))
{
CAEChannelInfo stdLayout;
switch (settings.channels)
case 10: stdLayout = AE_CH_LAYOUT_7_1; break;
}
- if (m_settings.config == AE_CONFIG_MATCH)
- format.m_channelLayout.ResolveChannels(stdLayout);
- else
+ if (m_settings.config == AE_CONFIG_FIXED)
format.m_channelLayout = stdLayout;
+ else
+ format.m_channelLayout.ResolveChannels(stdLayout);;
+ }
+ // don't change from multi to stereo in AUTO mode
+ else if ((settings.config == AE_CONFIG_AUTO) &&
+ m_stats.GetWaterLevel() > 0 && m_internalFormat.m_channelLayout.Count() > 2)
+ {
+ format.m_channelLayout = m_internalFormat.m_channelLayout;
}
if (m_sink.GetDeviceType(m_settings.device) == AE_DEVTYPE_IEC958)
m_settings.channels = CSettings::Get().GetInt("audiooutput.channels");
m_settings.samplerate = CSettings::Get().GetInt("audiooutput.samplerate");
- m_settings.stereoupmix = CSettings::Get().GetBool("audiooutput.stereoupmix");
+ m_settings.stereoupmix = (m_settings.channels > AE_CH_LAYOUT_2_0) ? CSettings::Get().GetBool("audiooutput.stereoupmix") : false;
m_settings.normalizelevels = CSettings::Get().GetBool("audiooutput.normalizelevels");
m_settings.passthrough = m_settings.config == AE_CONFIG_FIXED ? false : CSettings::Get().GetBool("audiooutput.passthrough");
unsigned int addsize = size;
unsigned int channelsInBuffer = m_chLayoutCountStream;
+ if (m_flushRequested && m_paused)
+ InternalFlush();
+
if (!m_valid || size == 0 || data == NULL || !m_Buffer || m_flushRequested)
return 0;
virtual void DoAudioWork(){};
virtual bool OnAction(const CAction &action) { return false; };
- virtual bool GetCurrentSubtitle(CStdString& strSubtitle) { strSubtitle = ""; return false; }
//returns a state that is needed for resuming from a specific time
virtual CStdString GetPlayerState() { return ""; };
virtual bool SetPlayerState(CStdString state) { return false;};
SRCS = BaseRenderer.cpp
SRCS += OverlayRenderer.cpp
SRCS += OverlayRendererUtil.cpp
+SRCS += OverlayRendererGUI.cpp
SRCS += RenderCapture.cpp
SRCS += RenderManager.cpp
SRCS += RenderFlags.cpp
#include "settings/DisplaySettings.h"
#include "threads/SingleLock.h"
#include "utils/MathUtils.h"
+#include "OverlayRendererGUI.h"
#if defined(HAS_GL) || defined(HAS_GLES)
#include "OverlayRendererGL.h"
#elif defined(HAS_DX)
#include "OverlayRendererDX.h"
#endif
-
using namespace OVERLAY;
r = new COverlayImageDX((CDVDOverlaySpu*)o);
#endif
+ if(!r && o->IsOverlayType(DVDOVERLAY_TYPE_TEXT))
+ r = new COverlayText((CDVDOverlayText*)o);
+
if(r)
o->m_overlay = r->Acquire();
return r;
enum EPosition
{ POSITION_ABSOLUTE
+ , POSITION_ABSOLUTE_SCREEN
, POSITION_RELATIVE
} m_pos;
--- /dev/null
+/*
+ * Copyright (C) 2005-2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "system.h"
+
+#include "OverlayRendererGUI.h"
+#include "settings/Settings.h"
+
+#include "filesystem/File.h"
+#include "Util.h"
+#include "utils/URIUtils.h"
+#include "utils/StringUtils.h"
+#include "utils/log.h"
+#include "guilib/GUITextLayout.h"
+#include "guilib/GUIFontManager.h"
+#include "guilib/GUIFont.h"
+#include "cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayText.h"
+#include "cores/VideoRenderers/RenderManager.h"
+
+using namespace OVERLAY;
+
+static color_t color[8] = { 0xFFFFFF00
+ , 0xFFFFFFFF
+ , 0xFF0099FF
+ , 0xFF00FF00
+ , 0xFFCCFF00
+ , 0xFF00FFFF
+ , 0xFFE5E5E5
+ , 0xFFC0C0C0 };
+
+static CGUITextLayout* GetFontLayout()
+{
+ if (CUtil::IsUsingTTFSubtitles())
+ { std::string font_file = CSettings::Get().GetString("subtitles.font");
+ std::string font_path = URIUtils::AddFileToFolder("special://home/media/Fonts/", font_file);
+ if (!XFILE::CFile::Exists(font_path))
+ font_path = URIUtils::AddFileToFolder("special://xbmc/media/Fonts/", font_file);
+
+ // We scale based on PAL4x3 - this at least ensures all sizing is constant across resolutions.
+ RESOLUTION_INFO pal(720, 576, 0);
+ CGUIFont *subtitle_font = g_fontManager.LoadTTF("__subtitle__"
+ , font_path
+ , color[CSettings::Get().GetInt("subtitles.color")]
+ , 0
+ , CSettings::Get().GetInt("subtitles.height")
+ , CSettings::Get().GetInt("subtitles.style")
+ , false, 1.0f, 1.0f, &pal, true);
+ CGUIFont *border_font = g_fontManager.LoadTTF("__subtitleborder__"
+ , font_path
+ , 0xFF000000
+ , 0
+ , CSettings::Get().GetInt("subtitles.height")
+ , CSettings::Get().GetInt("subtitles.style")
+ , true, 1.0f, 1.0f, &pal, true);
+ if (!subtitle_font || !border_font)
+ CLog::Log(LOGERROR, "CGUIWindowFullScreen::OnMessage(WINDOW_INIT) - Unable to load subtitle font");
+ else
+ return new CGUITextLayout(subtitle_font, true, 0, border_font);
+ }
+
+ return NULL;
+}
+
+COverlayText::COverlayText(CDVDOverlayText * src)
+{
+ CDVDOverlayText::CElement* e = src->m_pHead;
+ while (e)
+ {
+ if (e->IsElementType(CDVDOverlayText::ELEMENT_TYPE_TEXT))
+ {
+ CDVDOverlayText::CElementText* t = (CDVDOverlayText::CElementText*)e;
+ m_text += t->m_text;
+ m_text += "\n";
+ }
+ e = e->pNext;
+ }
+
+ // Avoid additional line breaks
+ while(StringUtils::EndsWith(m_text, "\n"))
+ m_text = StringUtils::Left(m_text, m_text.length() - 1);
+
+ // Remove HTML-like tags from the subtitles until
+ StringUtils::Replace(m_text, "\\r", "");
+ StringUtils::Replace(m_text, "\r", "");
+ StringUtils::Replace(m_text, "\\n", "[CR]");
+ StringUtils::Replace(m_text, "\n", "[CR]");
+ StringUtils::Replace(m_text, "<br>", "[CR]");
+ StringUtils::Replace(m_text, "\\N", "[CR]");
+ StringUtils::Replace(m_text, "<i>", "[I]");
+ StringUtils::Replace(m_text, "</i>", "[/I]");
+ StringUtils::Replace(m_text, "<b>", "[B]");
+ StringUtils::Replace(m_text, "</b>", "[/B]");
+ StringUtils::Replace(m_text, "<u>", "");
+ StringUtils::Replace(m_text, "<p>", "");
+ StringUtils::Replace(m_text, "<P>", "");
+ StringUtils::Replace(m_text, " ", "");
+ StringUtils::Replace(m_text, "</u>", "");
+ StringUtils::Replace(m_text, "</i", "[/I]"); // handle tags which aren't closed properly (happens).
+ StringUtils::Replace(m_text, "</b", "[/B]");
+ StringUtils::Replace(m_text, "</u", "");
+
+ m_layout = GetFontLayout();
+
+ m_subalign = CSettings::Get().GetInt("subtitles.align");
+ if (m_subalign == SUBTITLE_ALIGN_MANUAL)
+ {
+ m_align = ALIGN_SUBTITLE;
+ m_pos = POSITION_RELATIVE;
+ m_x = 0.0f;
+ m_y = 0.0f;
+ }
+ else
+ {
+ m_align = ALIGN_VIDEO;
+ m_pos = POSITION_RELATIVE;
+ m_x = 0.5f;
+ if(m_subalign == SUBTITLE_ALIGN_TOP_INSIDE
+ || m_subalign == SUBTITLE_ALIGN_TOP_OUTSIDE)
+ m_y = 0.0f;
+ else
+ m_y = 1.0f;
+ }
+ m_width = 0;
+ m_height = 0;
+}
+
+COverlayText::~COverlayText()
+{
+ delete m_layout;
+}
+
+void COverlayText::Render(OVERLAY::SRenderState &state)
+{
+ if(m_layout == NULL)
+ return;
+
+ /* until we can get gfx scaling correct in windowed mode, we must disable this */
+ if(!g_graphicsContext.IsFullScreenVideo())
+ return;
+
+ CRect rs, rd;
+ g_renderManager.GetVideoRect(rs, rd);
+ RESOLUTION_INFO res = g_graphicsContext.GetResInfo();
+
+ float width_max = (float) res.Overscan.right - res.Overscan.left;
+ float y, width, height;
+ m_layout->Update(m_text, width_max * 0.9f, false, true); // true to force LTR reading order (most Hebrew subs are this format)
+ m_layout->GetTextExtent(width, height);
+
+ if (m_subalign == SUBTITLE_ALIGN_MANUAL
+ || m_subalign == SUBTITLE_ALIGN_TOP_OUTSIDE
+ || m_subalign == SUBTITLE_ALIGN_BOTTOM_INSIDE)
+ y = state.y - height;
+ else
+ y = state.y;
+
+ // clamp inside screen
+ y = std::max(y, (float) res.Overscan.top);
+ y = std::min(y, res.Overscan.bottom - height);
+
+ m_layout->RenderOutline(state.x, y, 0, 0xFF000000, XBFONT_CENTER_X, width_max);
+}
--- /dev/null
+/*
+ * Copyright (C) 2005-2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include "OverlayRenderer.h"
+#include <string>
+
+enum SubtitleAlign
+{
+ SUBTITLE_ALIGN_MANUAL = 0,
+ SUBTITLE_ALIGN_BOTTOM_INSIDE,
+ SUBTITLE_ALIGN_BOTTOM_OUTSIDE,
+ SUBTITLE_ALIGN_TOP_INSIDE,
+ SUBTITLE_ALIGN_TOP_OUTSIDE
+};
+
+class CGUITextLayout;
+class CDVDOverlayText;
+
+namespace OVERLAY {
+
+class COverlayText
+: public COverlay
+{
+public:
+ COverlayText() {}
+ COverlayText(CDVDOverlayText* src);
+ virtual ~COverlayText();
+ virtual void Render(SRenderState& state);
+
+ CGUITextLayout* m_layout;
+ std::string m_text;
+ int m_subalign;
+};
+
+}
\ No newline at end of file
#include "settings/AdvancedSettings.h"
#include "settings/MediaSettings.h"
#include "settings/Settings.h"
+#include "guilib/GUIFontManager.h"
#if defined(HAS_GL)
#include "LinuxRendererGL.h"
return;
}
- bool ismaster = CDVDClock::IsMasterClock();
-
- //the videoreferenceclock updates its clock on every vertical blank
- //we want every frame's presenttime to end up in the middle of two vblanks
- //if CDVDPlayerAudio is the master clock, we add a correction to the presenttime
- if (ismaster)
- presenttime += m_presentcorr * frametime;
-
double clock = CDVDClock::WaitAbsoluteClock(presenttime * DVD_TIME_BASE) / DVD_TIME_BASE;
double target = 0.5;
double error = ( clock - presenttime ) / frametime - target;
avgerror /= ERRORBUFFSIZE;
- //if CDVDPlayerAudio is not the master clock, we change the clock speed slightly
+ //we change the clock speed slightly
//to make every frame's presenttime end up in the middle of two vblanks
- if (!ismaster)
- {
- //integral correction, clamp to -0.5:0.5 range
- m_presentcorr = std::max(std::min(m_presentcorr + avgerror * 0.01, 0.1), -0.1);
- g_VideoReferenceClock.SetFineAdjust(1.0 - avgerror * 0.01 - m_presentcorr * 0.01);
- }
- else
- {
- //integral correction, wrap to -0.5:0.5 range
- m_presentcorr = wrap(m_presentcorr + avgerror * 0.01, target - 1.0, target);
- g_VideoReferenceClock.SetFineAdjust(1.0);
- }
+ //integral correction, clamp to -0.5:0.5 range
+ m_presentcorr = std::max(std::min(m_presentcorr + avgerror * 0.01, 0.1), -0.1);
+ g_VideoReferenceClock.SetFineAdjust(1.0 - avgerror * 0.01 - m_presentcorr * 0.01);
//printf("%f %f % 2.0f%% % f % f\n", presenttime, clock, m_presentcorr * 100, error, error_org);
}
m_bIsStarted = false;
m_overlays.Flush();
+ g_fontManager.Unload("__subtitle__");
+ g_fontManager.Unload("__subtitleborder__");
// free renderer resources.
// TODO: we may also want to release the renderer here.
#include "DVDAudio.h"
#include "DVDClock.h"
#include "DVDCodecs/DVDCodecs.h"
-#include "DVDPlayerAudio.h"
+#include "DVDCodecs/Audio/DVDAudioCodec.h"
#include "cores/AudioEngine/AEFactory.h"
#include "cores/AudioEngine/Interfaces/AEStream.h"
#include "settings/MediaSettings.h"
static double GetFrequency() { return (double)m_systemFrequency ; }
static double WaitAbsoluteClock(double target);
- //when m_ismasterclock is true, CDVDPlayerAudio synchronizes the clock to the audio stream
- //when it's false, CDVDPlayerAudio synchronizes the audio stream to the clock
- //the rendermanager needs to know about that because it can synchronize the videoreferenceclock to the video timestamps
- static void SetMasterClock(bool ismasterclock) { m_ismasterclock = ismasterclock; }
- static bool IsMasterClock() { return m_ismasterclock; }
static CDVDClock* GetMasterClock();
protected:
static void CheckSystemClock();
#include "system.h"
#include "cores/AudioEngine/Utils/AEAudioFormat.h"
+#include "cores/AudioEngine/Utils/AEUtil.h"
+#include "DVDClock.h"
+
#if (defined HAVE_CONFIG_H) && (!defined TARGET_WINDOWS)
#include "config.h"
class CDVDCodecOption;
class CDVDCodecOptions;
+typedef struct stDVDAudioFrame
+{
+ uint8_t* data;
+ double pts;
+ double duration;
+ unsigned int size;
+
+ int channel_count;
+ int encoded_channel_count;
+ CAEChannelInfo channel_layout;
+ enum AEDataFormat data_format;
+ int bits_per_sample;
+ int sample_rate;
+ int encoded_sample_rate;
+ bool passthrough;
+} DVDAudioFrame;
+
class CDVDAudioCodec
{
public:
virtual int Decode(uint8_t* pData, int iSize) = 0;
/*
- * returns nr of bytes used or -1 on error
+ * returns nr of bytes in decode buffer
* the data is valid until the next Decode call
*/
virtual int GetData(uint8_t** dst) = 0;
/*
+ * the data is valid until the next Decode call
+ */
+ virtual void GetData(DVDAudioFrame &frame)
+ {
+ frame.size = GetData(&frame.data);
+ if(frame.size == 0u)
+ return;
+ frame.channel_layout = GetChannelMap();
+ frame.channel_count = GetChannels();
+ frame.encoded_channel_count = GetEncodedChannels();
+ frame.data_format = GetDataFormat();
+ frame.bits_per_sample = CAEUtil::DataFormatToBits(frame.data_format);
+ frame.sample_rate = GetSampleRate();
+ frame.encoded_sample_rate = GetEncodedSampleRate();
+ frame.passthrough = NeedPassthrough();
+ frame.pts = DVD_NOPTS_VALUE;
+ // compute duration.
+ int n = (frame.channel_count * frame.bits_per_sample * frame.sample_rate)>>3;
+ if (n)
+ frame.duration = ((double)frame.size * DVD_TIME_BASE) / n;
+ else
+ frame.duration = 0.0;
+ }
+
+ /*
* resets the decoder
*/
virtual void Reset() = 0;
CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Keep default threading for Hi10p: %d",
m_pCodecContext->thread_type);
}
+ else if (CSettings::Get().GetBool("videoplayer.useframemtdec"))
+ {
+ CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Keep default threading %d by videoplayer.useframemtdec",
+ m_pCodecContext->thread_type);
+ }
else
m_pCodecContext->thread_type = FF_THREAD_SLICE;
CSingleLock lock(m_RTMPSection);
m_bPaused = !m_bPaused;
+
+ CLog::Log(LOGNOTICE, "RTMP Pause %s requested", m_bPaused ? "TRUE" : "FALSE");
+
m_libRTMP.Pause(m_rtmp, m_bPaused);
return true;
+++ /dev/null
-/*
- * Copyright (C) 2005-2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "DVDPerformanceCounter.h"
-#include "DVDMessageQueue.h"
-#include "utils/TimeUtils.h"
-
-#include "dvd_config.h"
-
-#ifdef DVDDEBUG_WITH_PERFORMANCE_COUNTER
-#include <xbdm.h>
-#endif
-
-HRESULT __stdcall DVDPerformanceCounterAudioQueue(PLARGE_INTEGER numerator, PLARGE_INTEGER demoninator)
-{
- numerator->QuadPart = 0LL;
- //g_dvdPerformanceCounter.Lock();
- if (g_dvdPerformanceCounter.m_pAudioQueue)
- {
- int iSize = g_dvdPerformanceCounter.m_pAudioQueue->GetDataSize();
- int iMaxSize = g_dvdPerformanceCounter.m_pAudioQueue->GetMaxDataSize();
- if (iMaxSize > 0)
- {
- int iPercent = (iSize * 100) / iMaxSize;
- if (iPercent > 100) iPercent = 100;
- numerator->QuadPart = iPercent;
- }
- }
- //g_dvdPerformanceCounter.Unlock();
- return S_OK;
-}
-
-HRESULT __stdcall DVDPerformanceCounterVideoQueue(PLARGE_INTEGER numerator, PLARGE_INTEGER demoninator)
-{
- numerator->QuadPart = 0LL;
- //g_dvdPerformanceCounter.Lock();
- if (g_dvdPerformanceCounter.m_pVideoQueue)
- {
- int iSize = g_dvdPerformanceCounter.m_pVideoQueue->GetDataSize();
- int iMaxSize = g_dvdPerformanceCounter.m_pVideoQueue->GetMaxDataSize();
- if (iMaxSize > 0)
- {
- int iPercent = (iSize * 100) / iMaxSize;
- if (iPercent > 100) iPercent = 100;
- numerator->QuadPart = iPercent;
- }
- }
- //g_dvdPerformanceCounter.Unlock();
- return S_OK;
-}
-
-inline int64_t get_thread_cpu_usage(ProcessPerformance* p)
-{
- if (p->thread)
- {
- ULARGE_INTEGER old_time_thread;
- ULARGE_INTEGER old_time_system;
-
- old_time_thread.QuadPart = p->timer_thread.QuadPart;
- old_time_system.QuadPart = p->timer_system.QuadPart;
-
- p->timer_thread.QuadPart = p->thread->GetAbsoluteUsage();
- p->timer_system.QuadPart = CurrentHostCounter();
-
- int64_t threadTime = (p->timer_thread.QuadPart - old_time_thread.QuadPart);
- int64_t systemTime = (p->timer_system.QuadPart - old_time_system.QuadPart);
-
- if (systemTime > 0 && threadTime > 0) return ((threadTime * 100) / systemTime);
- }
- return 0LL;
-}
-
-HRESULT __stdcall DVDPerformanceCounterVideoDecodePerformance(PLARGE_INTEGER numerator, PLARGE_INTEGER demoninator)
-{
- //g_dvdPerformanceCounter.Lock();
- numerator->QuadPart = get_thread_cpu_usage(&g_dvdPerformanceCounter.m_videoDecodePerformance);
- //g_dvdPerformanceCounter.Unlock();
- return S_OK;
-}
-
-HRESULT __stdcall DVDPerformanceCounterAudioDecodePerformance(PLARGE_INTEGER numerator, PLARGE_INTEGER demoninator)
-{
- //g_dvdPerformanceCounter.Lock();
- numerator->QuadPart = get_thread_cpu_usage(&g_dvdPerformanceCounter.m_audioDecodePerformance);
- //g_dvdPerformanceCounter.Unlock();
- return S_OK;
-}
-
-HRESULT __stdcall DVDPerformanceCounterMainPerformance(PLARGE_INTEGER numerator, PLARGE_INTEGER demoninator)
-{
- //g_dvdPerformanceCounter.Lock();
- numerator->QuadPart = get_thread_cpu_usage(&g_dvdPerformanceCounter.m_mainPerformance);
- //g_dvdPerformanceCounter.Unlock();
- return S_OK;
-}
-
-CDVDPerformanceCounter g_dvdPerformanceCounter;
-
-CDVDPerformanceCounter::CDVDPerformanceCounter()
-{
- m_pAudioQueue = NULL;
- m_pVideoQueue = NULL;
-
- memset(&m_videoDecodePerformance, 0, sizeof(m_videoDecodePerformance)); // video decoding
- memset(&m_audioDecodePerformance, 0, sizeof(m_audioDecodePerformance)); // audio decoding + output to audio device
- memset(&m_mainPerformance, 0, sizeof(m_mainPerformance)); // reading files, demuxing, decoding of subtitles + menu overlays
-
- Initialize();
-}
-
-CDVDPerformanceCounter::~CDVDPerformanceCounter()
-{
- DeInitialize();
-}
-
-bool CDVDPerformanceCounter::Initialize()
-{
- CSingleLock lock(m_critSection);
-
-#ifdef DVDDEBUG_WITH_PERFORMANCE_COUNTER
-
- DmRegisterPerformanceCounter("DVDAudioQueue", DMCOUNT_SYNC, DVDPerformanceCounterAudioQueue);
- DmRegisterPerformanceCounter("DVDVideoQueue", DMCOUNT_SYNC, DVDPerformanceCounterVideoQueue);
- DmRegisterPerformanceCounter("DVDVideoDecodePerformance", DMCOUNT_SYNC, DVDPerformanceCounterVideoDecodePerformance);
- DmRegisterPerformanceCounter("DVDAudioDecodePerformance", DMCOUNT_SYNC, DVDPerformanceCounterAudioDecodePerformance);
- DmRegisterPerformanceCounter("DVDMainPerformance", DMCOUNT_SYNC, DVDPerformanceCounterMainPerformance);
-
-#endif
-
- return true;
-}
-
-void CDVDPerformanceCounter::DeInitialize()
-{
-
-}
-
+++ /dev/null
-#pragma once
-
-/*
- * Copyright (C) 2005-2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#define FILETIME_TO_ULARGE_INTEGER(ularge, filetime) { ularge.u.HighPart = filetime.dwHighDateTime; ularge.u.LowPart = filetime.dwLowDateTime; }
-
-#include "system.h"
-#include "threads/Thread.h"
-#include "threads/SingleLock.h"
-
-class CDVDMessageQueue;
-
-typedef struct stProcessPerformance
-{
- ULARGE_INTEGER timer_thread;
- ULARGE_INTEGER timer_system;
- CThread* thread;
-} ProcessPerformance;
-
-class CDVDPerformanceCounter
-{
-public:
- CDVDPerformanceCounter();
- ~CDVDPerformanceCounter();
-
- bool Initialize();
- static void DeInitialize();
-
- void EnableAudioQueue(CDVDMessageQueue* pQueue) { CSingleLock lock(m_critSection); m_pAudioQueue = pQueue; }
- void DisableAudioQueue() { CSingleLock lock(m_critSection); m_pAudioQueue = NULL; }
-
- void EnableVideoQueue(CDVDMessageQueue* pQueue) { CSingleLock lock(m_critSection); m_pVideoQueue = pQueue; }
- void DisableVideoQueue() { CSingleLock lock(m_critSection); m_pVideoQueue = NULL; }
-
- void EnableVideoDecodePerformance(CThread *thread) { CSingleLock lock(m_critSection); m_videoDecodePerformance.thread = thread; }
- void DisableVideoDecodePerformance() { CSingleLock lock(m_critSection); m_videoDecodePerformance.thread = NULL; }
-
- void EnableAudioDecodePerformance(CThread *thread) { CSingleLock lock(m_critSection); m_audioDecodePerformance.thread = thread; }
- void DisableAudioDecodePerformance() { CSingleLock lock(m_critSection); m_audioDecodePerformance.thread = NULL; }
-
- void EnableMainPerformance(CThread *thread) { CSingleLock lock(m_critSection); m_mainPerformance.thread = thread; }
- void DisableMainPerformance() { CSingleLock lock(m_critSection); m_mainPerformance.thread = NULL; }
-
- CDVDMessageQueue* m_pAudioQueue;
- CDVDMessageQueue* m_pVideoQueue;
-
- ProcessPerformance m_videoDecodePerformance;
- ProcessPerformance m_audioDecodePerformance;
- ProcessPerformance m_mainPerformance;
-
-private:
- CCriticalSection m_critSection;
-};
-
-extern CDVDPerformanceCounter g_dvdPerformanceCounter;
-
#include "guilib/StereoscopicsManager.h"
#include "Application.h"
#include "ApplicationMessenger.h"
-#include "DVDPerformanceCounter.h"
#include "filesystem/File.h"
#include "pictures/Picture.h"
#include "DllSwScale.h"
return (lh) > (rh); \
} while(0)
+class PredicateSubtitleFilter
+{
+private:
+ std::string audiolang;
+ bool original;
+ bool preferexternal;
+public:
+ /** \brief The class' operator() decides if the given (subtitle) SelectionStream is relevant wrt.
+ * preferred subtitle language and audio language. If the subtitle is relevant <B>false</B> false is returned.
+ *
+ * A subtitle is relevant if
+ * - it was previously selected, or
+ * - it's an external sub and "prefer external subs was selected", or
+ * - it's a forced sub and "original stream's language" was selected, or
+ * - it's a forced sub and its language matches the audio's language, or
+ * - it's a default sub, or
+ * - its language matches the preferred subtitle's language (unequal to "original stream's language")
+ */
+ PredicateSubtitleFilter(std::string& lang)
+ : audiolang(lang),
+ original(StringUtils::EqualsNoCase(CSettings::Get().GetString("locale.subtitlelanguage"), "original")),
+ preferexternal(CSettings::Get().GetBool("subtitles.preferexternal"))
+ {
+ };
+
+ bool operator()(const SelectionStream& ss) const
+ {
+ if (ss.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream)
+ return false;
+
+ if (preferexternal)
+ {
+ if(ss.source == STREAM_SOURCE_DEMUX_SUB || ss.source == STREAM_SOURCE_TEXT)
+ return false;
+ }
+
+ if ((ss.flags & CDemuxStream::FLAG_FORCED) && (original || g_LangCodeExpander.CompareLangCodes(ss.language, audiolang)))
+ return false;
+
+ if ((ss.flags & CDemuxStream::FLAG_DEFAULT))
+ return false;
+
+ if(!original)
+ {
+ std::string subtitle_language = g_langInfo.GetSubtitleLanguage();
+ if (g_LangCodeExpander.CompareLangCodes(subtitle_language, ss.language))
+ return false;
+ }
+
+ return true;
+ }
+};
+
static bool PredicateAudioPriority(const SelectionStream& lh, const SelectionStream& rh)
{
PREDICATE_RETURN(lh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_AudioStream
return false;
}
-static bool PredicateSubtitlePriority(const SelectionStream& lh, const SelectionStream& rh)
+/** \brief The class' operator() decides if the given (subtitle) SelectionStream lh is 'better than' the given (subtitle) SelectionStream rh.
+* If lh is 'better than' rh the return value is true, false otherwise.
+*
+* A subtitle lh is 'better than' a subtitle rh (in evaluation order) if
+* - lh was previously selected, or
+* - lh is an external sub and "prefer external subs was selected" and rh not, or
+* - lh is a forced sub and ("original stream's language" was selected or subtitles are off) and rh not, or
+* - lh is an external sub and its language matches the preferred subtitle's language (unequal to "original stream's language") and rh not, or
+* - lh is an external sub and rh not, or
+* - lh is language matches the preferred subtitle's language (unequal to "original stream's language") and rh not, or
+* - lh is a default sub and rh not
+*/
+class PredicateSubtitlePriority
{
- if(!CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleOn)
+private:
+ std::string audiolang;
+ bool original;
+ bool preferextsubs;
+ bool subson;
+public:
+ PredicateSubtitlePriority(std::string& lang)
+ : audiolang(lang),
+ original(StringUtils::EqualsNoCase(CSettings::Get().GetString("locale.subtitlelanguage"), "original")),
+ preferextsubs(CSettings::Get().GetBool("subtitles.preferexternal")),
+ subson(CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleOn)
{
- PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_FORCED
- , rh.flags & CDemuxStream::FLAG_FORCED);
- }
-
- PREDICATE_RETURN(lh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream
- , rh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream);
+ };
- CStdString subtitle_language = g_langInfo.GetSubtitleLanguage();
- if(!StringUtils::EqualsNoCase(CSettings::Get().GetString("locale.subtitlelanguage"), "original"))
+ bool operator()(const SelectionStream& lh, const SelectionStream& rh) const
{
- PREDICATE_RETURN((lh.source == STREAM_SOURCE_DEMUX_SUB || lh.source == STREAM_SOURCE_TEXT) && g_LangCodeExpander.CompareLangCodes(subtitle_language, lh.language)
- , (rh.source == STREAM_SOURCE_DEMUX_SUB || rh.source == STREAM_SOURCE_TEXT) && g_LangCodeExpander.CompareLangCodes(subtitle_language, rh.language));
- }
+ PREDICATE_RETURN(lh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream
+ , rh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream);
- PREDICATE_RETURN(lh.source == STREAM_SOURCE_DEMUX_SUB
- , rh.source == STREAM_SOURCE_DEMUX_SUB);
+ if (preferextsubs)
+ {
+ PREDICATE_RETURN(lh.source == STREAM_SOURCE_DEMUX_SUB
+ , rh.source == STREAM_SOURCE_DEMUX_SUB);
- PREDICATE_RETURN(lh.source == STREAM_SOURCE_TEXT
- , rh.source == STREAM_SOURCE_TEXT);
+ PREDICATE_RETURN(lh.source == STREAM_SOURCE_TEXT
+ , rh.source == STREAM_SOURCE_TEXT);
+ }
- if(!StringUtils::EqualsNoCase(CSettings::Get().GetString("locale.subtitlelanguage"), "original"))
- {
- PREDICATE_RETURN(g_LangCodeExpander.CompareLangCodes(subtitle_language, lh.language)
- , g_LangCodeExpander.CompareLangCodes(subtitle_language, rh.language));
- }
+ if(!subson || original)
+ {
+ PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_FORCED && g_LangCodeExpander.CompareLangCodes(lh.language, audiolang)
+ , rh.flags & CDemuxStream::FLAG_FORCED && g_LangCodeExpander.CompareLangCodes(rh.language, audiolang));
- PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_DEFAULT
- , rh.flags & CDemuxStream::FLAG_DEFAULT);
+ PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_FORCED
+ , rh.flags & CDemuxStream::FLAG_FORCED);
+ }
- return false;
-}
+ CStdString subtitle_language = g_langInfo.GetSubtitleLanguage();
+ if(!original)
+ {
+ PREDICATE_RETURN((lh.source == STREAM_SOURCE_DEMUX_SUB || lh.source == STREAM_SOURCE_TEXT) && g_LangCodeExpander.CompareLangCodes(subtitle_language, lh.language)
+ , (rh.source == STREAM_SOURCE_DEMUX_SUB || rh.source == STREAM_SOURCE_TEXT) && g_LangCodeExpander.CompareLangCodes(subtitle_language, rh.language));
+ }
+
+ PREDICATE_RETURN(lh.source == STREAM_SOURCE_DEMUX_SUB
+ , rh.source == STREAM_SOURCE_DEMUX_SUB);
+
+ PREDICATE_RETURN(lh.source == STREAM_SOURCE_TEXT
+ , rh.source == STREAM_SOURCE_TEXT);
+
+ if(!original)
+ {
+ PREDICATE_RETURN(g_LangCodeExpander.CompareLangCodes(subtitle_language, lh.language)
+ , g_LangCodeExpander.CompareLangCodes(subtitle_language, rh.language));
+ }
+
+ PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_DEFAULT
+ , rh.flags & CDemuxStream::FLAG_DEFAULT);
+
+ return false;
+ }
+};
static bool PredicateVideoPriority(const SelectionStream& lh, const SelectionStream& rh)
{
m_dvdPlayerAudio(&m_clock, m_messenger),
m_dvdPlayerSubtitle(&m_overlayContainer),
m_dvdPlayerTeletext(),
- m_ready(true)
+ m_ready(true),
+ m_DemuxerPausePending(false)
{
m_pDemuxer = NULL;
m_pSubtitleDemuxer = NULL;
m_messenger.Init();
- g_dvdPerformanceCounter.EnableMainPerformance(this);
CUtil::ClearTempFonts();
}
m_dvdPlayerVideo.EnableSubtitle(CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleOn);
// open subtitle stream
- streams = m_SelectionStreams.Get(STREAM_SUBTITLE, PredicateSubtitlePriority);
+ SelectionStream as = m_SelectionStreams.Get(STREAM_AUDIO, GetAudioStream());
+ PredicateSubtitleFilter psf(as.language);
+ streams = m_SelectionStreams.RemoveIf(STREAM_SUBTITLE, psf);
+ PredicateSubtitlePriority psp(as.language);
+ std::stable_sort(streams.begin(), streams.end(), psp);
valid = false;
for(SelectionStreams::iterator it = streams.begin(); it != streams.end() && !valid; ++it)
{
}
}
if(!valid)
+ {
CloseSubtitleStream(true);
+ SetSubtitleVisible(false);
+ }
// open teletext stream
streams = m_SelectionStreams.Get(STREAM_TELETEXT);
// update application with our state
UpdateApplication(1000);
+ // make sure we run subtitle process here
+ m_dvdPlayerSubtitle.Process(m_clock.GetClock() + m_State.time_offset - m_dvdPlayerVideo.GetSubtitleDelay());
+
if (CheckDelayedChannelEntry())
continue;
if ((!m_dvdPlayerAudio.AcceptsData() && m_CurrentAudio.id >= 0) ||
(!m_dvdPlayerVideo.AcceptsData() && m_CurrentVideo.id >= 0))
{
+ if(m_pDemuxer && m_DemuxerPausePending)
+ {
+ m_DemuxerPausePending = false;
+ m_pDemuxer->SetSpeed(DVD_PLAYSPEED_PAUSE);
+ }
+
Sleep(10);
continue;
}
void CDVDPlayer::OnExit()
{
- g_dvdPerformanceCounter.DisableMainPerformance();
-
try
{
CLog::Log(LOGNOTICE, "CDVDPlayer::OnExit()");
{
CloseAudioStream(false);
OpenAudioStream(st.id, st.source);
+ AdaptForcedSubtitles();
m_messenger.Put(new CDVDMsgPlayerSeek(GetTime(), true, true, true, true, true));
}
}
m_dvdPlayerAudio.SetSpeed(speed);
m_dvdPlayerVideo.SetSpeed(speed);
- // TODO - we really shouldn't pause demuxer
- // until our buffers are somewhat filled
+ // We can't pause demuxer until our buffers are full. Doing so will result in continued
+ // calls to Read() which may then block indefinitely (CDVDInputStreamRTMP for example).
if(m_pDemuxer)
- m_pDemuxer->SetSpeed(speed);
+ {
+ m_DemuxerPausePending = (speed == DVD_PLAYSPEED_PAUSE);
+ if (!m_DemuxerPausePending)
+ m_pDemuxer->SetSpeed(speed);
+ }
}
else if (pMsg->IsType(CDVDMsg::PLAYER_CHANNEL_SELECT_NUMBER) && m_messenger.GetPacketCount(CDVDMsg::PLAYER_CHANNEL_SELECT_NUMBER) == 0)
{
return true;
}
+bool CDVDPlayer::AdaptForcedSubtitles()
+{
+ bool valid = false;
+ SelectionStream ss = m_SelectionStreams.Get(STREAM_SUBTITLE, GetSubtitle());
+ if (ss.flags & CDemuxStream::FLAG_FORCED || !GetSubtitleVisible())
+ {
+ SelectionStream as = m_SelectionStreams.Get(STREAM_AUDIO, GetAudioStream());
+ SelectionStreams streams = m_SelectionStreams.Get(STREAM_SUBTITLE);
+
+ for(SelectionStreams::iterator it = streams.begin(); it != streams.end() && !valid; ++it)
+ {
+ if (it->flags & CDemuxStream::FLAG_FORCED && g_LangCodeExpander.CompareLangCodes(it->language, as.language))
+ {
+ if(OpenSubtitleStream(it->id, it->source))
+ {
+ valid = true;
+ SetSubtitleVisible(true);
+ }
+ }
+ }
+ if(!valid)
+ {
+ CloseSubtitleStream(true);
+ SetSubtitleVisible(false);
+ }
+ }
+ return valid;
+}
+
bool CDVDPlayer::OpenTeletextStream(int iStream, int source)
{
if (!m_pDemuxer)
return false;
}
-bool CDVDPlayer::GetCurrentSubtitle(CStdString& strSubtitle)
-{
- double pts = m_clock.GetClock() + m_State.time_offset;
-
- if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD) && m_CurrentSubtitle.source != STREAM_SOURCE_TEXT && m_CurrentSubtitle.source != STREAM_SOURCE_DEMUX_SUB)
- return false;
-
- m_dvdPlayerSubtitle.GetCurrentSubtitle(strSubtitle, pts - m_dvdPlayerVideo.GetSubtitleDelay());
-
- // In case we stalled, don't output any subs
- if ((m_dvdPlayerVideo.IsStalled() && HasVideo()) || (m_dvdPlayerAudio.IsStalled() && HasAudio()))
- strSubtitle = m_lastSub;
- else
- m_lastSub = strSubtitle;
-
- return !strSubtitle.IsEmpty();
-}
-
CStdString CDVDPlayer::GetPlayerState()
{
CSingleLock lock(m_StateSection);
if (index == GetAudioStream())
info.bitrate = m_dvdPlayerAudio.GetAudioBitrate();
- else
+ else if (m_pDemuxer)
{
CDemuxStreamAudio* stream = m_pDemuxer->GetStreamFromAudioId(index);
if (stream)
return streams;
}
+ template<typename Filter>
+ SelectionStreams RemoveIf(StreamType type, Filter filter)
+ {
+ SelectionStreams streams = Get(type);
+ streams.erase(std::remove_if(streams.begin(), streams.end(), filter), streams.end());
+ return streams;
+ }
+
void Clear (StreamType type, StreamSource source);
int Source (StreamSource source, std::string filename);
virtual bool GetStreamDetails(CStreamDetails &details);
virtual void GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info);
- virtual bool GetCurrentSubtitle(CStdString& strSubtitle);
-
virtual CStdString GetPlayerState();
virtual bool SetPlayerState(CStdString state);
bool OpenAudioStream(int iStream, int source, bool reset = true);
bool OpenVideoStream(int iStream, int source, bool reset = true);
bool OpenSubtitleStream(int iStream, int source);
+
+ /** \brief Switches forced subtitles to forced subtitles matching the language of the current audio track.
+ * If these are not available, subtitles are disabled.
+ * \return true if the subtitles were changed, false otherwise.
+ */
+ bool AdaptForcedSubtitles();
bool OpenTeletextStream(int iStream, int source);
bool CloseAudioStream(bool bWaitForBuffers);
bool CloseVideoStream(bool bWaitForBuffers);
bool m_HasVideo;
bool m_HasAudio;
+
+ bool m_DemuxerPausePending;
};
#include "DVDCodecs/Audio/DVDAudioCodec.h"
#include "DVDCodecs/DVDCodecs.h"
#include "DVDCodecs/DVDFactoryCodec.h"
-#include "DVDPerformanceCounter.h"
#include "settings/Settings.h"
#include "video/VideoReferenceClock.h"
#include "utils/log.h"
#include <sstream>
#include <iomanip>
+#include <math.h>
/* for sync-based resampling */
#define PROPORTIONAL 20.0
m_pClock = pClock;
m_pAudioCodec = NULL;
m_audioClock = 0;
- m_droptime = 0;
m_speed = DVD_PLAYSPEED_NORMAL;
m_stalled = true;
m_started = false;
m_silence = false;
- m_duration = 0.0;
m_resampleratio = 1.0;
m_synctype = SYNC_DISCON;
m_setsynctype = SYNC_DISCON;
m_prevsynctype = -1;
m_error = 0;
- m_errorbuff = 0;
- m_errorcount = 0;
+ m_errors.Flush();
m_syncclock = true;
m_integral = 0;
- m_skipdupcount = 0;
m_prevskipped = false;
m_maxspeedadjust = 0.0;
- m_errortime = 0;
- m_freq = CurrentHostFrequency();
-
m_messageQueue.SetMaxDataSize(6 * 1024 * 1024);
m_messageQueue.SetMaxTimeSize(8.0);
- g_dvdPerformanceCounter.EnableAudioQueue(&m_messageQueue);
}
CDVDPlayerAudio::~CDVDPlayerAudio()
{
StopThread();
- g_dvdPerformanceCounter.DisableAudioQueue();
// close the stream, and don't wait for the audio to be finished
// CloseStream(true);
if (hints.samplerate != m_streaminfo.samplerate)
SwitchCodecIfNeeded();
- m_droptime = 0;
m_audioClock = 0;
m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0;
m_started = false;
m_prevsynctype = -1;
m_error = 0;
- m_errorbuff = 0;
- m_errorcount = 0;
+ m_errors.Flush();
m_integral = 0;
- m_skipdupcount = 0;
m_prevskipped = false;
m_syncclock = true;
- m_errortime = CurrentHostCounter();
m_silence = false;
m_maxspeedadjust = CSettings::Get().GetNumber("videoplayer.maxspeedadjust");
}
// decode one audio frame and returns its uncompressed size
-int CDVDPlayerAudio::DecodeFrame(DVDAudioFrame &audioframe, bool bDropPacket)
+int CDVDPlayerAudio::DecodeFrame(DVDAudioFrame &audioframe)
{
int result = 0;
m_audioClock = dts;
int len = m_pAudioCodec->Decode(m_decode.data, m_decode.size);
- m_audioStats.AddSampleBytes(m_decode.size);
- if (len < 0)
+ if (len < 0 || len > m_decode.size)
{
/* if error, we skip the packet */
- CLog::Log(LOGERROR, "CDVDPlayerAudio::DecodeFrame - Decode Error. Skipping audio packet");
+ CLog::Log(LOGERROR, "CDVDPlayerAudio::DecodeFrame - Decode Error. Skipping audio packet (%d)", len);
m_decode.Release();
m_pAudioCodec->Reset();
return DECODE_FLAG_ERROR;
}
- // fix for fucked up decoders
- if( len > m_decode.size )
- {
- CLog::Log(LOGERROR, "CDVDPlayerAudio:DecodeFrame - Codec tried to consume more data than available. Potential memory corruption");
- m_decode.Release();
- m_pAudioCodec->Reset();
- return DECODE_FLAG_ERROR;
- }
+ m_audioStats.AddSampleBytes(len);
m_decode.data += len;
m_decode.size -= len;
-
// get decoded data and the size of it
- audioframe.size = m_pAudioCodec->GetData(&audioframe.data);
- audioframe.pts = m_audioClock;
+ m_pAudioCodec->GetData(audioframe);
if (audioframe.size == 0)
continue;
- audioframe.channel_layout = m_pAudioCodec->GetChannelMap();
- audioframe.channel_count = m_pAudioCodec->GetChannels();
- audioframe.encoded_channel_count = m_pAudioCodec->GetEncodedChannels();
- audioframe.data_format = m_pAudioCodec->GetDataFormat();
- audioframe.bits_per_sample = CAEUtil::DataFormatToBits(audioframe.data_format);
- audioframe.sample_rate = m_pAudioCodec->GetSampleRate();
- audioframe.encoded_sample_rate = m_pAudioCodec->GetEncodedSampleRate();
- audioframe.passthrough = m_pAudioCodec->NeedPassthrough();
+ if (audioframe.pts == DVD_NOPTS_VALUE)
+ audioframe.pts = m_audioClock;
if (m_streaminfo.samplerate != audioframe.encoded_sample_rate)
{
}
}
- // compute duration.
- int n = (audioframe.channel_count * audioframe.bits_per_sample * audioframe.sample_rate)>>3;
- if (n > 0)
- {
- // safety check, if channels == 0, n will result in 0, and that will result in a nice devide exception
- audioframe.duration = ((double)audioframe.size * DVD_TIME_BASE) / n;
-
- // increase audioclock to after the packet
- m_audioClock += audioframe.duration;
- }
-
- if(audioframe.duration > 0)
- m_duration = audioframe.duration;
+ // increase audioclock to after the packet
+ m_audioClock += audioframe.duration;
// if demux source want's us to not display this, continue
if(m_decode.msg->GetPacketDrop())
- continue;
-
- //If we are asked to drop this packet, return a size of zero. then it won't be played
- //we currently still decode the audio.. this is needed since we still need to know it's
- //duration to make sure clock is updated correctly.
- if( bDropPacket )
result |= DECODE_FLAG_DROP;
return result;
if (m_messageQueue.ReceivedAbortRequest()) return DECODE_FLAG_ABORT;
CDVDMsg* pMsg;
- int priority = (m_speed == DVD_PLAYSPEED_PAUSE && m_started) ? 1 : 0;
-
- int timeout;
- if(m_duration > 0)
- timeout = (int)(1000 * (m_duration / DVD_TIME_BASE + m_dvdAudio.GetCacheTime()));
- else
- timeout = 1000;
+ int timeout = (int)(1000 * m_dvdAudio.GetCacheTime()) + 100;
// read next packet and return -1 on error
+ int priority = 1;
+ //Do we want a new audio frame?
+ if (m_started == false /* when not started */
+ || m_speed == DVD_PLAYSPEED_NORMAL /* when playing normally */
+ || m_speed < DVD_PLAYSPEED_PAUSE /* when rewinding */
+ || (m_speed > DVD_PLAYSPEED_NORMAL && m_audioClock < m_pClock->GetClock())) /* when behind clock in ff */
+ priority = 0;
+
MsgQueueReturnCode ret = m_messageQueue.Get(&pMsg, timeout, priority);
if (ret == MSGQ_TIMEOUT)
else if (pMsg->IsType(CDVDMsg::GENERAL_RESYNC))
{ //player asked us to set internal clock
CDVDMsgGeneralResync* pMsgGeneralResync = (CDVDMsgGeneralResync*)pMsg;
+ CLog::Log(LOGDEBUG, "CDVDPlayerAudio - CDVDMsg::GENERAL_RESYNC(%f, %d)"
+ , pMsgGeneralResync->m_timestamp
+ , pMsgGeneralResync->m_clock);
if (pMsgGeneralResync->m_timestamp != DVD_NOPTS_VALUE)
m_audioClock = pMsgGeneralResync->m_timestamp;
m_ptsInput.Flush();
m_dvdAudio.SetPlayingPts(m_audioClock);
if (pMsgGeneralResync->m_clock)
- {
- CLog::Log(LOGDEBUG, "CDVDPlayerAudio - CDVDMsg::GENERAL_RESYNC(%f, 1)", m_audioClock);
m_pClock->Discontinuity(m_dvdAudio.GetPlayingPts());
- }
- else
- CLog::Log(LOGDEBUG, "CDVDPlayerAudio - CDVDMsg::GENERAL_RESYNC(%f, 0)", m_audioClock);
}
else if (pMsg->IsType(CDVDMsg::GENERAL_RESET))
{
}
else if (pMsg->IsType(CDVDMsg::PLAYER_SETSPEED))
{
- m_speed = static_cast<CDVDMsgInt*>(pMsg)->m_value;
+ double speed = static_cast<CDVDMsgInt*>(pMsg)->m_value;
- if (m_speed == DVD_PLAYSPEED_NORMAL)
+ if (speed == DVD_PLAYSPEED_NORMAL)
{
m_dvdAudio.Resume();
}
else
{
m_syncclock = true;
- if (m_speed != DVD_PLAYSPEED_PAUSE)
+ if (speed != DVD_PLAYSPEED_PAUSE)
m_dvdAudio.Flush();
m_dvdAudio.Pause();
}
+ m_speed = speed;
}
else if (pMsg->IsType(CDVDMsg::AUDIO_SILENCE))
{
m_silence = static_cast<CDVDMsgBool*>(pMsg)->m_value;
- if (m_silence)
- CLog::Log(LOGDEBUG, "CDVDPlayerAudio - CDVDMsg::AUDIO_SILENCE(%f, 1)", m_audioClock);
- else
- CLog::Log(LOGDEBUG, "CDVDPlayerAudio - CDVDMsg::AUDIO_SILENCE(%f, 0)", m_audioClock);
+ CLog::Log(LOGDEBUG, "CDVDPlayerAudio - CDVDMsg::AUDIO_SILENCE(%f, %d)"
+ , m_audioClock, m_silence);
}
else if (pMsg->IsType(CDVDMsg::GENERAL_STREAMCHANGE))
{
{
m_decode.Release();
- g_dvdPerformanceCounter.EnableAudioDecodePerformance(this);
-
#ifdef TARGET_WINDOWS
CoInitializeEx(NULL, COINIT_MULTITHREADED);
#endif
while (!m_bStop)
{
- //Don't let anybody mess with our global variables
- int result = DecodeFrame(audioframe, m_speed > DVD_PLAYSPEED_NORMAL || m_speed < 0 ||
- CAEFactory::IsSuspended()); // blocks if no audio is available, but leaves critical section before doing so
+ int result = DecodeFrame(audioframe);
+
+ //Drop when not playing normally
+ if(m_speed != DVD_PLAYSPEED_NORMAL
+ && m_started == true)
+ {
+ result |= DECODE_FLAG_DROP;
+ }
UpdatePlayerInfo();
if( result & DECODE_FLAG_TIMEOUT )
{
- bool transitioningToStalled = !m_stalled;
- m_stalled = true;
-
// Flush as the audio output may keep looping if we don't
- if(m_speed == DVD_PLAYSPEED_NORMAL && transitioningToStalled)
+ if(m_speed == DVD_PLAYSPEED_NORMAL && !m_stalled)
{
m_dvdAudio.Drain();
m_dvdAudio.Flush();
+ m_stalled = true;
}
continue;
break;
}
-#ifdef PROFILE /* during profiling we just drop all packets, after having decoded */
- m_pClock->Discontinuity(audioframe.pts);
- continue;
-#endif
-
if( audioframe.size == 0 )
continue;
if (m_silence)
memset(audioframe.data, 0, audioframe.size);
- if( result & DECODE_FLAG_DROP )
+ if(result & DECODE_FLAG_DROP)
{
- //frame should be dropped. Don't let audio move ahead of the current time thou
- //we need to be able to start playing at any time
- //when playing backwords, we try to keep as small buffers as possible
-
- if(m_droptime == 0.0)
- m_droptime = m_pClock->GetAbsoluteClock();
- if(m_speed > 0)
- m_droptime += audioframe.duration * DVD_PLAYSPEED_NORMAL / m_speed;
- while( !m_bStop && m_droptime > m_pClock->GetAbsoluteClock() ) Sleep(1);
-
- m_stalled = false;
+ // keep output times in sync
+ m_dvdAudio.SetPlayingPts(m_audioClock);
}
else
{
- m_droptime = 0.0;
-
SetSyncType(audioframe.passthrough);
// add any packets play
CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: synctype set to %i: %s", m_synctype, synctypes[synctype]);
m_prevsynctype = m_synctype;
}
-
- CDVDClock::SetMasterClock(false);
}
void CDVDPlayerAudio::HandleSyncError(double duration)
{
double clock = m_pClock->GetClock();
double error = m_dvdAudio.GetPlayingPts() - clock;
- int64_t now;
if( fabs(error) > DVD_MSEC_TO_TIME(100) || m_syncclock )
{
m_pClock->Discontinuity(clock+error);
- if(m_speed == DVD_PLAYSPEED_NORMAL)
- CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Discontinuity1 - was:%f, should be:%f, error:%f", clock, clock+error, error);
+ CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Discontinuity1 - was:%f, should be:%f, error:%f", clock, clock+error, error);
- m_errorbuff = 0;
- m_errorcount = 0;
- m_skipdupcount = 0;
+ m_errors.Flush();
m_error = 0;
m_syncclock = false;
- m_errortime = CurrentHostCounter();
return;
}
- if (m_speed != DVD_PLAYSPEED_NORMAL)
- {
- m_errorbuff = 0;
- m_errorcount = 0;
- m_integral = 0;
- m_skipdupcount = 0;
- m_error = 0;
- m_errortime = CurrentHostCounter();
- return;
- }
-
- m_errorbuff += error;
- m_errorcount++;
+ m_errors.Add(error);
//check if measured error for 2 seconds
- now = CurrentHostCounter();
- if ((now - m_errortime) >= m_freq * 2)
+ if (m_errors.Get(m_error))
{
- m_errortime = now;
- m_error = m_errorbuff / m_errorcount;
-
- m_errorbuff = 0;
- m_errorcount = 0;
-
if (m_synctype == SYNC_DISCON)
{
double limit, error;
if (fabs(error) > limit - 0.001)
{
m_pClock->Discontinuity(clock+error);
- if(m_speed == DVD_PLAYSPEED_NORMAL)
- CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Discontinuity2 - was:%f, should be:%f, error:%f", clock, clock+error, error);
+ CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Discontinuity2 - was:%f, should be:%f, error:%f", clock, clock+error, error);
}
}
- else if (m_synctype == SYNC_SKIPDUP && m_skipdupcount == 0 && fabs(m_error) > DVD_MSEC_TO_TIME(10))
- {
- //check how many packets to skip/duplicate
- m_skipdupcount = (int)(m_error / duration);
- //if less than one frame off, see if it's more than two thirds of a frame, so we can get better in sync
- if (m_skipdupcount == 0 && fabs(m_error) > duration / 3 * 2)
- m_skipdupcount = (int)(m_error / (duration / 3 * 2));
-
- if (m_skipdupcount > 0)
- CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Duplicating %i packet(s) of %.2f ms duration",
- m_skipdupcount, duration / DVD_TIME_BASE * 1000.0);
- else if (m_skipdupcount < 0)
- CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Skipping %i packet(s) of %.2f ms duration ",
- m_skipdupcount * -1, duration / DVD_TIME_BASE * 1000.0);
- }
else if (m_synctype == SYNC_RESAMPLE)
{
//reset the integral on big errors, failsafe
m_integral = 0;
else if (fabs(m_error) > DVD_MSEC_TO_TIME(5))
m_integral += m_error / DVD_TIME_BASE / INTEGRAL;
+
+ double proportional = 0.0;
+
+ //on big errors use more proportional
+ if (fabs(m_error / DVD_TIME_BASE) > 0.0)
+ {
+ double proportionaldiv = PROPORTIONAL * (PROPREF / fabs(m_error / DVD_TIME_BASE));
+ if (proportionaldiv < PROPDIVMIN) proportionaldiv = PROPDIVMIN;
+ else if (proportionaldiv > PROPDIVMAX) proportionaldiv = PROPDIVMAX;
+
+ proportional = m_error / DVD_TIME_BASE / proportionaldiv;
+ }
+ m_resampleratio = 1.0 / g_VideoReferenceClock.GetSpeed() + proportional + m_integral;
}
}
}
}
else if (m_synctype == SYNC_SKIPDUP)
{
- if (m_skipdupcount < 0)
+ double limit = std::max(DVD_MSEC_TO_TIME(10), audioframe.duration * 2.0 / 3.0);
+ if (m_error < -limit)
{
m_prevskipped = !m_prevskipped;
- if (!m_prevskipped)
- {
+ if (m_prevskipped)
m_dvdAudio.AddPackets(audioframe);
- m_skipdupcount++;
+ else
+ {
+ CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Dropping packet of %d ms", DVD_TIME_TO_MSEC(audioframe.duration));
+ m_error += audioframe.duration;
}
}
- else if (m_skipdupcount > 0)
+ else if(m_error > limit)
{
+ CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Duplicating packet of %d ms", DVD_TIME_TO_MSEC(audioframe.duration));
m_dvdAudio.AddPackets(audioframe);
m_dvdAudio.AddPackets(audioframe);
- m_skipdupcount--;
+ m_error -= audioframe.duration;
}
- else if (m_skipdupcount == 0)
- {
+ else
m_dvdAudio.AddPackets(audioframe);
- }
}
else if (m_synctype == SYNC_RESAMPLE)
{
- double proportional = 0.0;
-
- //on big errors use more proportional
- if (fabs(m_error / DVD_TIME_BASE) > 0.0)
- {
- double proportionaldiv = PROPORTIONAL * (PROPREF / fabs(m_error / DVD_TIME_BASE));
- if (proportionaldiv < PROPDIVMIN) proportionaldiv = PROPDIVMIN;
- else if (proportionaldiv > PROPDIVMAX) proportionaldiv = PROPDIVMAX;
-
- proportional = m_error / DVD_TIME_BASE / proportionaldiv;
- }
-
- m_resampleratio = 1.0 / g_VideoReferenceClock.GetSpeed() + proportional + m_integral;
m_dvdAudio.SetResampleRatio(m_resampleratio);
m_dvdAudio.AddPackets(audioframe);
}
void CDVDPlayerAudio::OnExit()
{
- g_dvdPerformanceCounter.DisableAudioDecodePerformance();
-
#ifdef TARGET_WINDOWS
CoUninitialize();
#endif
#define DECODE_FLAG_ABORT 8
#define DECODE_FLAG_TIMEOUT 16
-typedef struct stDVDAudioFrame
-{
- uint8_t* data;
- double pts;
- double duration;
- unsigned int size;
-
- int channel_count;
- int encoded_channel_count;
- CAEChannelInfo channel_layout;
- enum AEDataFormat data_format;
- int bits_per_sample;
- int sample_rate;
- int encoded_sample_rate;
- bool passthrough;
-} DVDAudioFrame;
-
class CPTSInputQueue
{
private:
void Flush();
};
+class CDVDErrorAverage
+{
+public:
+ CDVDErrorAverage()
+ {
+ Flush();
+ }
+ void Add(double error)
+ {
+ m_buffer += error;
+ m_count++;
+ }
+
+ void Flush()
+ {
+ m_buffer = 0.0f;
+ m_count = 0;
+ m_timer.Set(2000);
+ }
+
+ double Get()
+ {
+ if(m_count)
+ return m_buffer / m_count;
+ else
+ return 0.0;
+ }
+
+ bool Get(double& error)
+ {
+ if(m_timer.IsTimePast())
+ {
+ error = Get();
+ Flush();
+ return true;
+ }
+ else
+ return false;
+ }
+
+ double m_buffer; //place to store average errors
+ int m_count; //number of errors stored
+ XbmcThreads::EndTime m_timer;
+};
+
class CDVDPlayerAudio : public CThread
{
public:
virtual void OnExit();
virtual void Process();
- int DecodeFrame(DVDAudioFrame &audioframe, bool bDropPacket);
+ int DecodeFrame(DVDAudioFrame &audioframe);
void UpdatePlayerInfo();
BitstreamStats m_audioStats;
int m_speed;
- double m_droptime;
bool m_stalled;
bool m_started;
- double m_duration; // last packets duration
bool m_silence;
bool OutputPacket(DVDAudioFrame &audioframe);
double m_error; //last average error
- int64_t m_errortime; //timestamp of last time we measured
- int64_t m_freq;
-
void SetSyncType(bool passthrough);
void HandleSyncError(double duration);
- double m_errorbuff; //place to store average errors
- int m_errorcount;//number of errors stored
+ CDVDErrorAverage m_errors;
bool m_syncclock;
double m_integral; //integral correction for resampler
- int m_skipdupcount; //counter for skip/duplicate synctype
bool m_prevskipped;
double m_maxspeedadjust;
double m_resampleratio; //resample ratio when using SYNC_RESAMPLE, used for the codec info
return m_pOverlayContainer->GetSize() < 5;
}
-void CDVDPlayerSubtitle::GetCurrentSubtitle(CStdString& strSubtitle, double pts)
-{
- strSubtitle = "";
-
- Process(pts); // TODO: move to separate thread?
-
- CSingleLock lock(*m_pOverlayContainer);
- VecOverlays* pOverlays = m_pOverlayContainer->GetOverlays();
- if (pOverlays)
- {
- for(vector<CDVDOverlay*>::iterator it = pOverlays->begin();it != pOverlays->end();++it)
- {
- CDVDOverlay* pOverlay = *it;
-
- if (pOverlay->IsOverlayType(DVDOVERLAY_TYPE_TEXT)
- && (pOverlay->iPTSStartTime <= pts)
- && (pOverlay->iPTSStopTime >= pts || pOverlay->iPTSStopTime == 0LL))
- {
- CDVDOverlayText::CElement* e = ((CDVDOverlayText*)pOverlay)->m_pHead;
- while (e)
- {
- if (e->IsElementType(CDVDOverlayText::ELEMENT_TYPE_TEXT))
- {
- CDVDOverlayText::CElementText* t = (CDVDOverlayText::CElementText*)e;
- strSubtitle += t->m_text;
- strSubtitle += "\n";
- }
- e = e->pNext;
- }
- }
- }
- }
- strSubtitle.TrimRight('\n');
-}
void Process(double pts);
void Flush();
void FindSubtitles(const char* strFilename);
- void GetCurrentSubtitle(CStdString& strSubtitle, double pts);
int GetSubtitleCount();
void UpdateOverlayInfo(CDVDInputStreamNavigator* pStream, int iAction) { m_pOverlayContainer->UpdateOverlayInfo(pStream, &m_dvdspus, iAction); }
#include "DVDDemuxers/DVDDemux.h"
#include "DVDDemuxers/DVDDemuxUtils.h"
#include "DVDOverlayRenderer.h"
-#include "DVDPerformanceCounter.h"
#include "DVDCodecs/DVDCodecs.h"
#include "DVDCodecs/Overlay/DVDOverlayCodecCC.h"
#include "DVDCodecs/Overlay/DVDOverlaySSA.h"
m_iNrOfPicturesNotToSkip = 0;
m_messageQueue.SetMaxDataSize(40 * 1024 * 1024);
m_messageQueue.SetMaxTimeSize(8.0);
- g_dvdPerformanceCounter.EnableVideoQueue(&m_messageQueue);
m_iCurrentPts = DVD_NOPTS_VALUE;
m_iDroppedFrames = 0;
CDVDPlayerVideo::~CDVDPlayerVideo()
{
StopThread();
- g_dvdPerformanceCounter.DisableVideoQueue();
g_VideoReferenceClock.StopThread();
}
m_iCurrentPts = DVD_NOPTS_VALUE;
m_FlipTimeStamp = m_pClock->GetAbsoluteClock();
- g_dvdPerformanceCounter.EnableVideoDecodePerformance(this);
}
void CDVDPlayerVideo::Process()
void CDVDPlayerVideo::OnExit()
{
- g_dvdPerformanceCounter.DisableVideoDecodePerformance();
-
if (m_pOverlayCodecCC)
{
m_pOverlayCodecCC->Dispose();
SRCS += DVDMessageTracker.cpp
SRCS += DVDOverlayContainer.cpp
SRCS += DVDOverlayRenderer.cpp
-SRCS += DVDPerformanceCounter.cpp
SRCS += DVDPlayer.cpp
SRCS += DVDPlayerAudio.cpp
SRCS += DVDPlayerSubtitle.cpp
#include "guilib/StereoscopicsManager.h"
#include "Application.h"
#include "ApplicationMessenger.h"
-#include "DVDPerformanceCounter.h"
#include "filesystem/File.h"
#include "pictures/Picture.h"
#include "DllSwScale.h"
return (lh) > (rh); \
} while(0)
+class PredicateSubtitleFilter
+{
+private:
+ std::string audiolang;
+ bool original;
+ bool preferexternal;
+public:
+ /** \brief The class' operator() decides if the given (subtitle) SelectionStream is relevant wrt.
+ * preferred subtitle language and audio language. If the subtitle is relevant <B>false</B> false is returned.
+ *
+ * A subtitle is relevant if
+ * - it was previously selected, or
+ * - it's an external sub and "prefer external subs was selected", or
+ * - it's a forced sub and "original stream's language" was selected, or
+ * - it's a forced sub and its language matches the audio's language, or
+ * - it's a default sub, or
+ * - its language matches the preferred subtitle's language (unequal to "original stream's language")
+ */
+ PredicateSubtitleFilter(std::string& lang)
+ : audiolang(lang),
+ original(StringUtils::EqualsNoCase(CSettings::Get().GetString("locale.subtitlelanguage"), "original")),
+ preferexternal(CSettings::Get().GetBool("subtitles.preferexternal"))
+ {
+ };
+
+ bool operator()(const OMXSelectionStream& ss) const
+ {
+ if (ss.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream)
+ return false;
+
+ if (preferexternal)
+ {
+ if(ss.source == STREAM_SOURCE_DEMUX_SUB || ss.source == STREAM_SOURCE_TEXT)
+ return false;
+ }
+
+ if ((ss.flags & CDemuxStream::FLAG_FORCED) && (original || g_LangCodeExpander.CompareLangCodes(ss.language, audiolang)))
+ return false;
+
+ if ((ss.flags & CDemuxStream::FLAG_DEFAULT))
+ return false;
+
+ if(!original)
+ {
+ std::string subtitle_language = g_langInfo.GetSubtitleLanguage();
+ if (g_LangCodeExpander.CompareLangCodes(subtitle_language, ss.language))
+ return false;
+ }
+
+ return true;
+ }
+};
+
static bool PredicateAudioPriority(const OMXSelectionStream& lh, const OMXSelectionStream& rh)
{
PREDICATE_RETURN(lh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_AudioStream
return false;
}
-static bool PredicateSubtitlePriority(const OMXSelectionStream& lh, const OMXSelectionStream& rh)
-{
- if(!CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleOn)
+/** \brief The class' operator() decides if the given (subtitle) SelectionStream lh is 'better than' the given (subtitle) SelectionStream rh.
+* If lh is 'better than' rh the return value is true, false otherwise.
+*
+* A subtitle lh is 'better than' a subtitle rh (in evaluation order) if
+* - lh was previously selected, or
+* - lh is an external sub and "prefer external subs was selected" and rh not, or
+* - lh is a forced sub and ("original stream's language" was selected or subtitles are off) and rh not, or
+* - lh is an external sub and its language matches the preferred subtitle's language (unequal to "original stream's language") and rh not, or
+* - lh is an external sub and rh not, or
+* - lh is language matches the preferred subtitle's language (unequal to "original stream's language") and rh not, or
+* - lh is a default sub and rh not
+*/
+class PredicateSubtitlePriority
+{
+private:
+ std::string audiolang;
+ bool original;
+ bool preferextsubs;
+ bool subson;
+public:
+ PredicateSubtitlePriority(std::string& lang)
+ : audiolang(lang),
+ original(StringUtils::EqualsNoCase(CSettings::Get().GetString("locale.subtitlelanguage"), "original")),
+ preferextsubs(CSettings::Get().GetBool("subtitles.preferexternal")),
+ subson(CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleOn)
{
- PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_FORCED
- , rh.flags & CDemuxStream::FLAG_FORCED);
- }
-
- PREDICATE_RETURN(lh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream
- , rh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream);
+ };
- CStdString subtitle_language = g_langInfo.GetSubtitleLanguage();
- if(!StringUtils::EqualsNoCase(CSettings::Get().GetString("locale.subtitlelanguage"), "original"))
+ bool operator()(const OMXSelectionStream& lh, const OMXSelectionStream& rh) const
{
- PREDICATE_RETURN((lh.source == STREAM_SOURCE_DEMUX_SUB || lh.source == STREAM_SOURCE_TEXT) && g_LangCodeExpander.CompareLangCodes(subtitle_language, lh.language)
- , (rh.source == STREAM_SOURCE_DEMUX_SUB || rh.source == STREAM_SOURCE_TEXT) && g_LangCodeExpander.CompareLangCodes(subtitle_language, rh.language));
- }
+ PREDICATE_RETURN(lh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream
+ , rh.type_index == CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleStream);
- PREDICATE_RETURN(lh.source == STREAM_SOURCE_DEMUX_SUB
- , rh.source == STREAM_SOURCE_DEMUX_SUB);
+ if (preferextsubs)
+ {
+ PREDICATE_RETURN(lh.source == STREAM_SOURCE_DEMUX_SUB
+ , rh.source == STREAM_SOURCE_DEMUX_SUB);
- PREDICATE_RETURN(lh.source == STREAM_SOURCE_TEXT
- , rh.source == STREAM_SOURCE_TEXT);
+ PREDICATE_RETURN(lh.source == STREAM_SOURCE_TEXT
+ , rh.source == STREAM_SOURCE_TEXT);
+ }
- if(!StringUtils::EqualsNoCase(CSettings::Get().GetString("locale.subtitlelanguage"), "original"))
- {
- PREDICATE_RETURN(g_LangCodeExpander.CompareLangCodes(subtitle_language, lh.language)
- , g_LangCodeExpander.CompareLangCodes(subtitle_language, rh.language));
- }
+ if(!subson || original)
+ {
+ PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_FORCED && g_LangCodeExpander.CompareLangCodes(lh.language, audiolang)
+ , rh.flags & CDemuxStream::FLAG_FORCED && g_LangCodeExpander.CompareLangCodes(rh.language, audiolang));
- PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_DEFAULT
- , rh.flags & CDemuxStream::FLAG_DEFAULT);
+ PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_FORCED
+ , rh.flags & CDemuxStream::FLAG_FORCED);
+ }
- return false;
-}
+ CStdString subtitle_language = g_langInfo.GetSubtitleLanguage();
+ if(!original)
+ {
+ PREDICATE_RETURN((lh.source == STREAM_SOURCE_DEMUX_SUB || lh.source == STREAM_SOURCE_TEXT) && g_LangCodeExpander.CompareLangCodes(subtitle_language, lh.language)
+ , (rh.source == STREAM_SOURCE_DEMUX_SUB || rh.source == STREAM_SOURCE_TEXT) && g_LangCodeExpander.CompareLangCodes(subtitle_language, rh.language));
+ }
+
+ PREDICATE_RETURN(lh.source == STREAM_SOURCE_DEMUX_SUB
+ , rh.source == STREAM_SOURCE_DEMUX_SUB);
+
+ PREDICATE_RETURN(lh.source == STREAM_SOURCE_TEXT
+ , rh.source == STREAM_SOURCE_TEXT);
+
+ if(!original)
+ {
+ PREDICATE_RETURN(g_LangCodeExpander.CompareLangCodes(subtitle_language, lh.language)
+ , g_LangCodeExpander.CompareLangCodes(subtitle_language, rh.language));
+ }
+
+ PREDICATE_RETURN(lh.flags & CDemuxStream::FLAG_DEFAULT
+ , rh.flags & CDemuxStream::FLAG_DEFAULT);
+
+ return false;
+ }
+};
static bool PredicateVideoPriority(const OMXSelectionStream& lh, const OMXSelectionStream& rh)
{
m_omxPlayerVideo.EnableSubtitle(CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleOn);
// open subtitle stream
- streams = m_SelectionStreams.Get(STREAM_SUBTITLE, PredicateSubtitlePriority);
+ OMXSelectionStream as = m_SelectionStreams.Get(STREAM_AUDIO, GetAudioStream());
+ PredicateSubtitleFilter psf(as.language);
+ streams = m_SelectionStreams.RemoveIf(STREAM_SUBTITLE, psf);
+ PredicateSubtitlePriority psp(as.language);
+ std::stable_sort(streams.begin(), streams.end(), psp);
valid = false;
for(OMXSelectionStreams::iterator it = streams.begin(); it != streams.end() && !valid; ++it)
{
}
}
if(!valid)
+ {
CloseSubtitleStream(true);
+ SetSubtitleVisible(false);
+ }
// open teletext stream
streams = m_SelectionStreams.Get(STREAM_TELETEXT);
// update application with our state
UpdateApplication(1000);
+ // make sure we run subtitle process here
+ m_dvdPlayerSubtitle.Process(m_clock.GetClock() - m_omxPlayerVideo.GetSubtitleDelay());
+
// OMX emergency exit
if(HasAudio() && m_omxPlayerAudio.BadState())
{
{
CloseAudioStream(false);
OpenAudioStream(st.id, st.source);
+ AdaptForcedSubtitles();
m_messenger.Put(new CDVDMsgPlayerSeek(GetTime(), true, true, true, true, true));
}
}
m_CurrentAudio.hint = hint;
m_CurrentAudio.stream = (void*)pStream;
m_CurrentAudio.started = false;
- m_clock.SetMasterClock(false);
m_HasAudio = true;
/* we are potentially going to be waiting on this */
return true;
}
+bool COMXPlayer::AdaptForcedSubtitles()
+{
+ bool valid = false;
+ OMXSelectionStream ss = m_SelectionStreams.Get(STREAM_SUBTITLE, GetSubtitle());
+ if (ss.flags & CDemuxStream::FLAG_FORCED || !GetSubtitleVisible())
+ {
+ OMXSelectionStream as = m_SelectionStreams.Get(STREAM_SUBTITLE, GetAudioStream());
+ OMXSelectionStreams streams = m_SelectionStreams.Get(STREAM_SUBTITLE);
+
+ for(OMXSelectionStreams::iterator it = streams.begin(); it != streams.end() && !valid; ++it)
+ {
+ if (it->flags & CDemuxStream::FLAG_FORCED && g_LangCodeExpander.CompareLangCodes(it->language, as.language))
+ {
+ if(OpenSubtitleStream(it->id, it->source))
+ {
+ valid = true;
+ SetSubtitleVisible(true);
+ }
+ }
+ }
+ if(!valid)
+ {
+ CloseSubtitleStream(true);
+ SetSubtitleVisible(false);
+ }
+ }
+ return valid;
+}
+
bool COMXPlayer::OpenTeletextStream(int iStream, int source)
{
if (!m_pDemuxer)
return false;
}
-bool COMXPlayer::GetCurrentSubtitle(CStdString& strSubtitle)
-{
- double pts = m_clock.GetClock() + m_State.time_offset;
-
- if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD) && m_CurrentSubtitle.source != STREAM_SOURCE_TEXT && m_CurrentSubtitle.source != STREAM_SOURCE_DEMUX_SUB)
- return false;
-
- m_dvdPlayerSubtitle.GetCurrentSubtitle(strSubtitle, pts - m_omxPlayerVideo.GetSubtitleDelay());
-
- // In case we stalled, don't output any subs
- if ((m_omxPlayerVideo.IsStalled() && HasVideo()) || (m_omxPlayerAudio.IsStalled() && HasAudio()))
- strSubtitle = m_lastSub;
- else
- m_lastSub = strSubtitle;
-
- return !strSubtitle.IsEmpty();
-}
-
CStdString COMXPlayer::GetPlayerState()
{
CSingleLock lock(m_StateSection);
if (index == GetAudioStream())
info.bitrate = m_omxPlayerAudio.GetAudioBitrate();
- else
+ else if (m_pDemuxer)
{
CDemuxStreamAudio* stream = m_pDemuxer->GetStreamFromAudioId(index);
if (stream)
return streams;
}
+ template<typename Filter>
+ OMXSelectionStreams RemoveIf(StreamType type, Filter filter)
+ {
+ OMXSelectionStreams streams = Get(type);
+ streams.erase(std::remove_if(streams.begin(), streams.end(), filter), streams.end());
+ return streams;
+ }
+
void Clear (StreamType type, StreamSource source);
int Source (StreamSource source, std::string filename);
virtual bool GetStreamDetails(CStreamDetails &details);
virtual void GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info);
- virtual bool GetCurrentSubtitle(CStdString& strSubtitle);
-
virtual CStdString GetPlayerState();
virtual bool SetPlayerState(CStdString state);
bool OpenAudioStream(int iStream, int source, bool reset = true);
bool OpenVideoStream(int iStream, int source, bool reset = true);
bool OpenSubtitleStream(int iStream, int source);
+
+ /** \brief Switches forced subtitles to forced subtitles matching the language of the current audio track.
+ * If these are not available, subtitles are disabled.
+ * \return true if the subtitles were changed, false otherwise.
+ */
+ bool AdaptForcedSubtitles();
bool OpenTeletextStream(int iStream, int source);
bool CloseAudioStream(bool bWaitForBuffers);
bool CloseVideoStream(bool bWaitForBuffers);
#include "system.h"
#include "cores/IPlayerCallback.h"
-#include "settings/ISettingsHandler.h"
+#include "settings/lib/ISettingsHandler.h"
#include "threads/CriticalSection.h"
#include "utils/StdString.h"
#include "Application.h"
#include "GUIDialogBoxBase.h"
-#include "guilib/GUIWindowManager.h"
#include "guilib/LocalizeStrings.h"
+#include "threads/SingleLock.h"
+#include "utils/StringUtils.h"
using namespace std;
#define CONTROL_HEADING 1
#define CONTROL_LINES_START 2
+#define CONTROL_TEXTBOX 9
#define CONTROL_CHOICES_START 10
CGUIDialogBoxBase::CGUIDialogBoxBase(int id, const CStdString &xmlFile)
{
m_bConfirmed = false;
m_loadType = KEEP_IN_MEMORY;
+ m_hasTextbox = false;
}
CGUIDialogBoxBase::~CGUIDialogBoxBase(void)
void CGUIDialogBoxBase::SetHeading(const CVariant& heading)
{
- m_strHeading = GetLocalized(heading);
- if (IsActive())
- SET_CONTROL_LABEL_THREAD_SAFE(1, m_strHeading);
+ std::string label = GetLocalized(heading);
+ CSingleLock lock(m_section);
+ if (label != m_strHeading)
+ {
+ m_strHeading = label;
+ SetInvalid();
+ }
}
-void CGUIDialogBoxBase::SetLine(int iLine, const CVariant& line)
+void CGUIDialogBoxBase::SetLine(unsigned int iLine, const CVariant& line)
{
- if (iLine < 0 || iLine >= DIALOG_MAX_LINES)
- return;
+ std::string label = GetLocalized(line);
+ CSingleLock lock(m_section);
+ vector<string> lines = StringUtils::Split(m_text, "\n");
+ if (iLine >= lines.size())
+ lines.resize(iLine+1);
+ lines[iLine] = label;
+ std::string text = StringUtils::Join(lines, "\n");
+ if (text != m_text)
+ {
+ m_text = StringUtils::Join(lines, "\n");
+ SetInvalid();
+ }
+}
- m_strLines[iLine] = GetLocalized(line);
- if (IsActive())
- SET_CONTROL_LABEL_THREAD_SAFE(CONTROL_LINES_START + iLine, m_strLines[iLine]);
+void CGUIDialogBoxBase::SetText(const CVariant& text)
+{
+ std::string label = GetLocalized(text);
+ CSingleLock lock(m_section);
+ if (label != m_text)
+ {
+ m_text = label;
+ SetInvalid();
+ }
}
void CGUIDialogBoxBase::SetChoice(int iButton, const CVariant &choice) // iButton == 0 for no, 1 for yes
if (iButton < 0 || iButton >= DIALOG_MAX_CHOICES)
return;
- m_strChoices[iButton] = GetLocalized(choice);
- if (IsActive())
- SET_CONTROL_LABEL_THREAD_SAFE(CONTROL_CHOICES_START + iButton, m_strChoices[iButton]);
+ std::string label = GetLocalized(choice);
+ CSingleLock lock(m_section);
+ if (label != m_strChoices[iButton])
+ {
+ m_strChoices[iButton] = label;
+ SetInvalid();
+ }
+}
+
+void CGUIDialogBoxBase::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
+{
+ if (m_bInvalidated)
+ { // take a copy of our labels to save holding the lock for too long
+ string heading, text;
+ vector<string> choices;
+ choices.reserve(DIALOG_MAX_CHOICES);
+ {
+ CSingleLock lock(m_section);
+ heading = m_strHeading;
+ text = m_text;
+ for (int i = 0; i < DIALOG_MAX_CHOICES; ++i)
+ choices.push_back(m_strChoices[i]);
+ }
+ SET_CONTROL_LABEL(CONTROL_HEADING, heading);
+ if (m_hasTextbox)
+ {
+ SET_CONTROL_LABEL(CONTROL_TEXTBOX, text);
+ }
+ else
+ {
+ vector<string> lines = StringUtils::Split(text, "\n", DIALOG_MAX_LINES);
+ lines.resize(DIALOG_MAX_LINES);
+ for (size_t i = 0 ; i < lines.size(); ++i)
+ SET_CONTROL_LABEL(CONTROL_LINES_START + i, lines[i]);
+ }
+ for (size_t i = 0 ; i < choices.size() ; ++i)
+ SET_CONTROL_LABEL(CONTROL_CHOICES_START + i, choices[i]);
+ }
+ CGUIDialog::Process(currentTime, dirtyregions);
}
void CGUIDialogBoxBase::OnInitWindow()
// set focus to default
m_lastControlID = m_defaultControl;
- // set control labels
- SET_CONTROL_LABEL(CONTROL_HEADING, !m_strHeading.empty() ? m_strHeading : GetDefaultLabel(CONTROL_HEADING));
- for (int i = 0 ; i < DIALOG_MAX_LINES ; ++i)
- SET_CONTROL_LABEL(CONTROL_LINES_START + i, !m_strLines[i].empty() ? m_strLines[i] : GetDefaultLabel(CONTROL_LINES_START + i));
- for (int i = 0 ; i < DIALOG_MAX_CHOICES ; ++i)
- SET_CONTROL_LABEL(CONTROL_CHOICES_START + i, !m_strChoices[i].empty() ? m_strChoices[i] : GetDefaultLabel(CONTROL_CHOICES_START + i));
+ m_hasTextbox = false;
+ const CGUIControl *control = GetControl(CONTROL_TEXTBOX);
+ if (control && control->GetControlType() == CGUIControl::GUICONTROL_TEXTBOX)
+ m_hasTextbox = true;
+ // set initial labels
+ {
+ CSingleLock lock(m_section);
+ for (int i = 0 ; i < DIALOG_MAX_CHOICES ; ++i)
+ {
+ if (m_strChoices[i].empty())
+ m_strChoices[i] = GetDefaultLabel(CONTROL_CHOICES_START + i);
+ }
+ }
CGUIDialog::OnInitWindow();
}
void CGUIDialogBoxBase::OnDeinitWindow(int nextWindowID)
{
// make sure we set default labels for heading, lines and choices
- SetHeading(m_strHeading = "");
- for (int i = 0 ; i < DIALOG_MAX_LINES ; ++i)
- SetLine(i, m_strLines[i] = "");
- for (int i = 0 ; i < DIALOG_MAX_CHOICES ; ++i)
- SetChoice(i, m_strChoices[i] = "");
+ {
+ CSingleLock lock(m_section);
+ m_strHeading.clear();
+ m_text.clear();
+ for (int i = 0 ; i < DIALOG_MAX_CHOICES ; ++i)
+ m_strChoices[i].clear();
+ }
CGUIDialog::OnDeinitWindow(nextWindowID);
}
*
*/
+#include <vector>
+
#include "guilib/GUIDialog.h"
#include "utils/Variant.h"
+#include "threads/CriticalSection.h"
#define DIALOG_MAX_LINES 3
#define DIALOG_MAX_CHOICES 2
virtual ~CGUIDialogBoxBase(void);
virtual bool OnMessage(CGUIMessage& message);
bool IsConfirmed() const;
- void SetLine(int iLine, const CVariant &line);
+ void SetLine(unsigned int iLine, const CVariant &line);
+ void SetText(const CVariant &text);
void SetHeading(const CVariant &heading);
void SetChoice(int iButton, const CVariant &choice);
protected:
*/
CStdString GetLocalized(const CVariant &var) const;
+ virtual void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions);
virtual void OnInitWindow();
virtual void OnDeinitWindow(int nextWindowID);
bool m_bConfirmed;
+ bool m_hasTextbox;
// actual strings
+ CCriticalSection m_section;
std::string m_strHeading;
- std::string m_strLines[DIALOG_MAX_LINES];
+ std::string m_text;
std::string m_strChoices[DIALOG_MAX_CHOICES];
};
}
// \brief Show CGUIDialogOK dialog, then wait for user to dismiss it.
+void CGUIDialogOK::ShowAndGetInput(const CVariant &heading, const CVariant &text)
+{
+ CGUIDialogOK *dialog = (CGUIDialogOK *)g_windowManager.GetWindow(WINDOW_DIALOG_OK);
+ if (!dialog)
+ return;
+ dialog->SetHeading(heading);
+ dialog->SetText(text);
+ dialog->DoModal();
+}
+
+// \brief Show CGUIDialogOK dialog, then wait for user to dismiss it.
void CGUIDialogOK::ShowAndGetInput(const CVariant &heading, const CVariant &line0, const CVariant &line1, const CVariant &line2)
{
CGUIDialogOK *dialog = (CGUIDialogOK *)g_windowManager.GetWindow(WINDOW_DIALOG_OK);
CGUIDialogOK(void);
virtual ~CGUIDialogOK(void);
virtual bool OnMessage(CGUIMessage& message);
+ static void ShowAndGetInput(const CVariant &heading, const CVariant &text);
static void ShowAndGetInput(const CVariant &heading, const CVariant &line0, const CVariant &line1, const CVariant &line2);
protected:
virtual int GetDefaultLabelID(int controlId) const;
return ShowAndGetInput(heading,line0,line1,line2,bDummy,noLabel,yesLabel);
}
-bool CGUIDialogYesNo::ShowAndGetInput(const CStdString& heading, const CStdString& line0, const CStdString& line1, const CStdString& line2, bool& bCanceled, const CStdString& noLabel, const CStdString& yesLabel)
+bool CGUIDialogYesNo::ShowAndGetInput(const std::string& heading, const std::string& text, bool& bCanceled, const std::string& noLabel, const std::string& yesLabel)
{
CGUIDialogYesNo *dialog = (CGUIDialogYesNo *)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO);
if (!dialog) return false;
dialog->SetHeading(heading);
- dialog->SetLine(0, line0);
- dialog->SetLine(1, line1);
- dialog->SetLine(2, line2);
+ dialog->SetText(text);
dialog->m_bCanceled = false;
- if (!noLabel.IsEmpty())
+ if (!noLabel.empty())
dialog->SetChoice(0,noLabel);
else
dialog->SetChoice(0,106);
- if (!yesLabel.IsEmpty())
+ if (!yesLabel.empty())
dialog->SetChoice(1,yesLabel);
else
dialog->SetChoice(1,107);
return (dialog->IsConfirmed()) ? true : false;
}
+bool CGUIDialogYesNo::ShowAndGetInput(const CStdString& heading, const CStdString& line0, const CStdString& line1, const CStdString& line2, bool& bCanceled, const CStdString& noLabel, const CStdString& yesLabel)
+{
+ std::string text = line0 + "\n" + line1 + "\n" + line2;
+ return ShowAndGetInput(heading, text, bCanceled, noLabel, yesLabel);
+}
+
int CGUIDialogYesNo::GetDefaultLabelID(int controlId) const
{
if (controlId == CONTROL_NO_BUTTON)
*
*/
+#include <string>
#include "GUIDialogBoxBase.h"
class CGUIDialogYesNo :
static bool ShowAndGetInput(int heading, int line0, int line1, int line2, bool& bCanceled);
static bool ShowAndGetInput(int heading, int line0, int line1, int line2, int iNoLabel, int iYesLabel, bool& bCanceled, unsigned int autoCloseTime = 0);
static bool ShowAndGetInput(const CStdString& heading, const CStdString& line0, const CStdString& line1, const CStdString& line2, const CStdString& noLabel="", const CStdString& yesLabel="");
+ static bool ShowAndGetInput(const std::string& heading, const std::string& text, bool& bCanceled, const std::string& noLabel, const std::string& yesLabel);
static bool ShowAndGetInput(const CStdString& heading, const CStdString& line0, const CStdString& line1, const CStdString& line2, bool &bCanceled, const CStdString& noLabel="", const CStdString& yesLabel="");
protected:
virtual int GetDefaultLabelID(int controlId) const;
#include "Application.h"
#include "threads/SingleLock.h"
#include "settings/AdvancedSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "dialogs/GUIDialogExtendedProgressBar.h"
#include "dialogs/GUIDialogProgress.h"
*/
#include "XBDateTime.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "threads/CriticalSection.h"
#include "threads/Thread.h"
#include "utils/Observer.h"
m_cacheChannelItems = preloadItems;
m_cacheRulerItems = preloadItems;
m_cacheProgrammeItems = preloadItems;
- m_gridIndex = NULL;
}
CGUIEPGGridContainer::~CGUIEPGGridContainer(void)
end += cacheAfterChannel * m_channelLayout->Size(m_orientation);
int current = chanOffset;// - cacheBeforeChannel;
- while (pos < end && (int)m_channelItems.size())
+ while (pos < end && !m_channelItems.empty())
{
int itemNo = CorrectOffset(current, 0);
if (itemNo >= (int)m_channelItems.size())
float focusedPos = 0;
CGUIListItemPtr focusedItem;
int current = chanOffset;// - cacheBeforeChannel;
- while (pos < end && (int)m_channelItems.size())
+ while (pos < end && !m_channelItems.empty())
{
int itemNo = CorrectOffset(current, 0);
if (itemNo >= (int)m_channelItems.size())
int channel = chanOffset;
- while (posB < endB && m_channelItems.size())
+ while (posB < endB && !m_channelItems.empty())
{
if (channel >= (int)m_channelItems.size())
break;
posA2 -= missingSection * m_blockSize;
}
- while (posA2 < endA && m_programmeItems.size()) // FOR EACH ITEM ///////////////
+ while (posA2 < endA && !m_programmeItems.empty()) // FOR EACH ITEM ///////////////
{
item = m_gridIndex[channel][block].item;
if (!item || !item.get()->IsFileItem())
float focusedPosX = 0;
float focusedPosY = 0;
CGUIListItemPtr focusedItem;
- while (posB < endB && m_channelItems.size())
+ while (posB < endB && !m_channelItems.empty())
{
if (channel >= (int)m_channelItems.size())
break;
posA2 -= missingSection * m_blockSize;
}
- while (posA2 < endA && m_programmeItems.size()) // FOR EACH ITEM ///////////////
+ while (posA2 < endA && !m_programmeItems.empty()) // FOR EACH ITEM ///////////////
{
item = m_gridIndex[channel][block].item;
if (!item || !item.get()->IsFileItem())
Reset();
CFileItemList *items = (CFileItemList *)message.GetPointer();
+ /* Create programme items */
+ m_programmeItems.reserve(items->Size());
+ for (int i = 0; i < items->Size(); i++)
+ {
+ CFileItemPtr fileItem = items->Get(i);
+ if (fileItem->HasEPGInfoTag() && fileItem->GetEPGInfoTag()->HasPVRChannel())
+ m_programmeItems.push_back(fileItem);
+ }
+
/* Create Channel items */
int iLastChannelNumber = -1;
ItemsPtr itemsPointer;
itemsPointer.start = 0;
- for (int i = 0; i < items->Size(); ++i)
+ for (unsigned int i = 0; i < m_programmeItems.size(); ++i)
{
- const CEpgInfoTag* tag = items->Get(i)->GetEPGInfoTag();
- if (!tag || !tag->HasPVRChannel())
- continue;
-
+ const CEpgInfoTag* tag = ((CFileItem*)m_programmeItems[i].get())->GetEPGInfoTag();
int iCurrentChannelNumber = tag->PVRChannelNumber();
if (iCurrentChannelNumber != iLastChannelNumber)
{
m_channelItems.push_back(item);
}
}
- if (items->Size() > 0)
+ if (!m_programmeItems.empty())
{
- itemsPointer.stop = items->Size()-1;
+ itemsPointer.stop = m_programmeItems.size()-1;
m_epgItemsPtr.push_back(itemsPointer);
}
- /* Create programme items */
- for (int i = 0; i < items->Size(); i++)
- m_programmeItems.push_back(items->Get(i));
-
ClearGridIndex();
- m_gridIndex = (struct GridItemsPtr **) calloc(1,m_channelItems.size()*sizeof(struct GridItemsPtr*));
- if (m_gridIndex != NULL)
+ m_gridIndex.reserve(m_channelItems.size());
+ for (unsigned int i = 0; i < m_channelItems.size(); i++)
{
- for (unsigned int i = 0; i < m_channelItems.size(); i++)
- {
- m_gridIndex[i] = (struct GridItemsPtr*) calloc(1,MAXBLOCKS*sizeof(struct GridItemsPtr));
- }
+ std::vector<GridItemsPtr> blocks(MAXBLOCKS);
+ m_gridIndex.push_back(blocks);
}
UpdateLayout(true); // true to refresh all items
long tick(XbmcThreads::SystemClockMillis());
- for (unsigned int row = 0; row < m_channelItems.size(); ++row)
+ for (unsigned int row = 0; row < m_epgItemsPtr.size(); ++row)
{
CDateTime gridCursor = m_gridStart; //reset cursor for new channel
unsigned long progIdx = m_epgItemsPtr[row].start;
bool CGUIEPGGridContainer::MoveProgrammes(bool direction)
{
- if (!m_gridIndex || !m_item)
+ if (m_gridIndex.empty() || !m_item)
return false;
if (direction)
int blockIndex = block + m_blockOffset;
// bail if out of range
- if (channelIndex >= m_channels || blockIndex > MAXBLOCKS)
+ if (channelIndex >= m_channels || blockIndex >= m_blocks)
return false;
// bail if block isn't occupied
if (!m_gridIndex[channelIndex][blockIndex].item)
int CGUIEPGGridContainer::GetSelectedItem() const
{
- if (!m_gridIndex ||
- !m_epgItemsPtr.size() ||
- m_channelCursor + m_channelOffset >= (int)m_channelItems.size() ||
- m_blockCursor + m_blockOffset >= (int)m_programmeItems.size())
+ if (m_gridIndex.empty() ||
+ m_epgItemsPtr.empty() ||
+ m_channelCursor + m_channelOffset >= m_channels ||
+ m_blockCursor + m_blockOffset >= m_blocks)
return 0;
CGUIListItemPtr currentItem = m_gridIndex[m_channelCursor + m_channelOffset][m_blockCursor + m_blockOffset].item;
CGUIListItemPtr CGUIEPGGridContainer::GetListItem(int offset, unsigned int flag) const
{
- if (!m_channelItems.size())
+ if (m_channelItems.empty())
return CGUIListItemPtr();
int item = m_channelCursor + m_channelOffset + offset;
int CGUIEPGGridContainer::GetRealBlock(const CGUIListItemPtr &item, const int &channel)
{
+ int channelIndex = channel + m_channelOffset;
int block = 0;
- while (m_gridIndex[channel + m_channelOffset][block].item != item && block < m_blocks)
+ while (m_gridIndex[channelIndex][block].item != item && block < m_blocks)
block++;
return block;
GridItemsPtr *CGUIEPGGridContainer::GetNextItem(const int &channel)
{
+ int channelIndex = channel + m_channelOffset;
+ int blockIndex = m_blockCursor + m_blockOffset;
+ if (channelIndex >= m_channels || blockIndex >= m_blocks)
+ return NULL;
+
int i = m_blockCursor;
- while (m_gridIndex[channel + m_channelOffset][i + m_blockOffset].item == m_gridIndex[channel + m_channelOffset][m_blockCursor + m_blockOffset].item && i < m_blocksPerPage)
+ while (i < m_blocksPerPage && m_gridIndex[channelIndex][i + m_blockOffset].item == m_gridIndex[channelIndex][blockIndex].item)
i++;
- return &m_gridIndex[channel + m_channelOffset][i + m_blockOffset];
+ return &m_gridIndex[channelIndex][i + m_blockOffset];
}
GridItemsPtr *CGUIEPGGridContainer::GetPrevItem(const int &channel)
{
+ int channelIndex = channel + m_channelOffset;
+ int blockIndex = m_blockCursor + m_blockOffset;
+ if (channelIndex >= m_channels || blockIndex >= m_blocks)
+ return NULL;
+
int i = m_blockCursor;
- while (m_gridIndex[channel + m_channelOffset][i + m_blockOffset].item == m_gridIndex[channel + m_channelOffset][m_blockCursor + m_blockOffset].item && i > 0)
+ while (i > 0 && m_gridIndex[channelIndex][i + m_blockOffset].item == m_gridIndex[channelIndex][blockIndex].item)
i--;
- return &m_gridIndex[channel + m_channelOffset][i + m_blockOffset];
-
-// return &m_gridIndex[channel + m_channelOffset][m_blockCursor + m_blockOffset - 1];
+ return &m_gridIndex[channelIndex][i + m_blockOffset];
}
GridItemsPtr *CGUIEPGGridContainer::GetItem(const int &channel)
{
- if ( (channel >= 0) && (channel < m_channels) )
- return &m_gridIndex[channel + m_channelOffset][m_blockCursor + m_blockOffset];
- else
+ int channelIndex = channel + m_channelOffset;
+ int blockIndex = m_blockCursor + m_blockOffset;
+ if (channelIndex >= m_channels || blockIndex >= m_blocks)
return NULL;
+
+ return &m_gridIndex[channelIndex][blockIndex];
}
void CGUIEPGGridContainer::SetFocus(bool bOnOff)
void CGUIEPGGridContainer::ClearGridIndex(void)
{
- if (m_gridIndex)
+ for (unsigned int i = 0; i < m_gridIndex.size(); i++)
{
- for (unsigned int i = 0; i < m_channelItems.size(); i++)
+ for (int block = 0; block < m_blocks; block++)
{
- for (int block = 0; block < m_blocks; block++)
- {
- if (m_gridIndex[i][block].item)
- m_gridIndex[i][block].item.get()->ClearProperties();
- }
- free(m_gridIndex[i]);
+ if (m_gridIndex[i][block].item)
+ m_gridIndex[i][block].item.get()->ClearProperties();
}
- free(m_gridIndex);
+ m_gridIndex[i].clear();
}
+ m_gridIndex.clear();
}
void CGUIEPGGridContainer::Reset()
m_lastItem = NULL;
m_lastChannel = NULL;
- m_gridIndex = NULL;
}
void CGUIEPGGridContainer::GoToBegin()
break;
}
}
- if (!m_channelLayout && m_channelLayouts.size())
+ if (!m_channelLayout && !m_channelLayouts.empty())
m_channelLayout = &m_channelLayouts[0]; // failsafe
m_focusedChannelLayout = NULL;
break;
}
}
- if (!m_focusedChannelLayout && m_focusedChannelLayouts.size())
+ if (!m_focusedChannelLayout && !m_focusedChannelLayouts.empty())
m_focusedChannelLayout = &m_focusedChannelLayouts[0]; // failsafe
m_programmeLayout = NULL;
break;
}
}
- if (!m_programmeLayout && m_programmeLayouts.size())
+ if (!m_programmeLayout && !m_programmeLayouts.empty())
m_programmeLayout = &m_programmeLayouts[0]; // failsafe
m_focusedProgrammeLayout = NULL;
break;
}
}
- if (!m_focusedProgrammeLayout && m_focusedProgrammeLayouts.size())
+ if (!m_focusedProgrammeLayout && !m_focusedProgrammeLayouts.empty())
m_focusedProgrammeLayout = &m_focusedProgrammeLayouts[0]; // failsafe
m_rulerLayout = NULL;
break;
}
}
- if (!m_rulerLayout && m_rulerLayouts.size())
+ if (!m_rulerLayout && !m_rulerLayouts.empty())
m_rulerLayout = &m_rulerLayouts[0]; // failsafe
}
CGUITexture m_guiProgressIndicatorTexture;
- struct GridItemsPtr **m_gridIndex;
+ std::vector<std::vector<GridItemsPtr> > m_gridIndex;
GridItemsPtr *m_item;
CGUIListItem *m_lastItem;
CGUIListItem *m_lastChannel;
else if (CAddonMgr::Get().IsAddonDisabled(addon->ID()))
pItem->SetProperty("Addon.Status",g_localizeStrings.Get(24023));
- if (!addon->Props().broken.IsEmpty())
+ if (addon->Props().broken == "DEPSNOTMET")
+ pItem->SetProperty("Addon.Status",g_localizeStrings.Get(24049));
+ else if (!addon->Props().broken.empty())
pItem->SetProperty("Addon.Status",g_localizeStrings.Get(24098));
if (addon2 && addon2->Version() < addon->Version())
{
}
}
-CFileItemPtr CAddonsDirectory::FileItemFromAddon(AddonPtr &addon, const CStdString &basePath, bool folder)
+CFileItemPtr CAddonsDirectory::FileItemFromAddon(const AddonPtr &addon, const CStdString &basePath, bool folder)
{
if (!addon)
return CFileItemPtr();
static CFileItemPtr GetMoreItem(const CStdString &content);
static void GenerateListing(CURL &path, ADDON::VECADDONS& addons, CFileItemList &items, bool reposAsFolders = true);
- static CFileItemPtr FileItemFromAddon(ADDON::AddonPtr &addon, const CStdString &basePath, bool folder = false);
+ static CFileItemPtr FileItemFromAddon(const ADDON::AddonPtr &addon, const CStdString &basePath, bool folder = false);
};
}
if (valuesVec.size() < 7)
{
CLog::Log(LOGERROR, "CCurlFile::GetCookies - invalid cookie: '%s'", curlCookieIter->data);
+ curlCookieIter = curlCookieIter->next;
continue;
}
CFileItemList items;
Load(items);
- CStdString executePath(GetExecutePath(item, contextWindow));
+ CStdString executePath(GetExecutePath(*item, contextWindow));
CFileItemPtr match = items.Get(executePath);
if (match)
CFileItemList items;
if (!Load(items)) return false;
- return items.Contains(GetExecutePath(item, contextWindow));
+ return items.Contains(GetExecutePath(*item, contextWindow));
}
-CStdString CFavouritesDirectory::GetExecutePath(const CFileItem *item, int contextWindow)
+CStdString CFavouritesDirectory::GetExecutePath(const CFileItem &item, int contextWindow)
+{
+ return GetExecutePath(item, StringUtils::Format("%i", contextWindow));
+}
+
+CStdString CFavouritesDirectory::GetExecutePath(const CFileItem &item, const std::string &contextWindow)
{
CStdString execute;
- if (item->m_bIsFolder && (g_advancedSettings.m_playlistAsFolders ||
- !(item->IsSmartPlayList() || item->IsPlayList())))
- execute.Format("ActivateWindow(%i,%s)", contextWindow, StringUtils::Paramify(item->GetPath()).c_str());
- else if (item->IsScript())
- execute.Format("RunScript(%s)", StringUtils::Paramify(item->GetPath().Mid(9)).c_str());
- else if (item->IsAndroidApp())
- execute.Format("StartAndroidActivity(%s)", StringUtils::Paramify(item->GetPath().Mid(26)).c_str());
+ if (item.m_bIsFolder && (g_advancedSettings.m_playlistAsFolders ||
+ !(item.IsSmartPlayList() || item.IsPlayList())))
+ {
+ if (!contextWindow.empty())
+ execute.Format("ActivateWindow(%s,%s,return)", contextWindow.c_str(), StringUtils::Paramify(item.GetPath()).c_str());
+ }
+ else if (item.IsScript())
+ execute.Format("RunScript(%s)", StringUtils::Paramify(item.GetPath().Mid(9)).c_str());
+ else if (item.IsAndroidApp())
+ execute.Format("StartAndroidActivity(%s)", StringUtils::Paramify(item.GetPath().Mid(26)).c_str());
else // assume a media file
{
- if (item->IsVideoDb() && item->HasVideoInfoTag())
- execute.Format("PlayMedia(%s)", StringUtils::Paramify(item->GetVideoInfoTag()->m_strFileNameAndPath).c_str());
+ if (item.IsVideoDb() && item.HasVideoInfoTag())
+ execute.Format("PlayMedia(%s)", StringUtils::Paramify(item.GetVideoInfoTag()->m_strFileNameAndPath).c_str());
else
- execute.Format("PlayMedia(%s)", StringUtils::Paramify(item->GetPath()).c_str());
+ execute.Format("PlayMedia(%s)", StringUtils::Paramify(item.GetPath()).c_str());
}
return execute;
}
-
+
}
static bool AddOrRemove(CFileItem *item, int contextWindow);
static bool Save(const CFileItemList& items);
static bool IsFavourite(CFileItem *item, int contextWindow);
+
+ static CStdString GetExecutePath(const CFileItem &item, int contextWindow);
+ static CStdString GetExecutePath(const CFileItem &item, const std::string &contextWindow);
private:
- static CStdString GetExecutePath(const CFileItem *item, int contextWindow);
};
}
}
//*********************************************************************************************
-bool CFile::Open(const CStdString& strFileName, unsigned int flags)
+bool CFile::Open(const CStdString& strFileName, const unsigned int flags)
{
m_flags = flags;
try
* 2) Only buffer true internet filesystems (streams) (http, etc.)
* 3) No buffer
*/
- if ( (flags & READ_NO_CACHE) == 0 && !CUtil::IsPicture(strFileName) )
+ if ( (m_flags & READ_NO_CACHE) == 0 && !CUtil::IsPicture(strFileName) )
{
if (g_advancedSettings.m_networkBufferMode == 0 || g_advancedSettings.m_networkBufferMode == 2)
{
if (URIUtils::IsInternetStream(url, (g_advancedSettings.m_networkBufferMode == 0) ) )
- flags |= READ_CACHED;
+ m_flags |= READ_CACHED;
}
else if (g_advancedSettings.m_networkBufferMode == 1)
{
- flags |= READ_CACHED; // Force cache for all others (in buffer mode 1)
+ m_flags |= READ_CACHED; // Force cache for all others (in buffer mode 1)
}
}
CFile();
virtual ~CFile();
- bool Open(const CStdString& strFileName, unsigned int flags = 0);
+ bool Open(const CStdString& strFileName, const unsigned int flags = 0);
bool OpenForWrite(const CStdString& strFileName, bool bOverWrite = false);
unsigned int Read(void* lpBuf, int64_t uiBufSize);
bool ReadString(char *szLine, int iLineLength);
return handle;
}
else
- CLog::Log(LOGERROR, "SFTPSession: Was connected but couldn't create filehandle\n");
+ CLog::Log(LOGERROR, "SFTPSession: Was connected but couldn't create filehandle for '%s'", file.c_str());
}
else
- CLog::Log(LOGERROR, "SFTPSession: Not connected and can't create file handle");
+ CLog::Log(LOGERROR, "SFTPSession: Not connected and can't create file handle for '%s'", file.c_str());
return NULL;
}
if (!dir)
{
- CLog::Log(LOGERROR, "%s: %s", __FUNCTION__, SFTPErrorText(sftp_error));
+ CLog::Log(LOGERROR, "%s: %s for '%s'", __FUNCTION__, SFTPErrorText(sftp_error), folder.c_str());
}
else
{
}
}
else
- CLog::Log(LOGERROR, "SFTPSession: Not connected, can't list directory");
+ CLog::Log(LOGERROR, "SFTPSession: Not connected, can't list directory '%s'", folder.c_str());
return false;
}
buffer->st_mtime = attributes->mtime;
buffer->st_atime = attributes->atime;
+ if S_ISDIR(attributes->permissions)
+ buffer->st_mode = _S_IFDIR;
+ else if S_ISREG(attributes->permissions)
+ buffer->st_mode = _S_IFREG;
+
sftp_attributes_free(attributes);
return 0;
}
else
{
- CLog::Log(LOGERROR, "SFTPSession: STAT - Failed to get attributes");
+ CLog::Log(LOGERROR, "SFTPSession::Stat - Failed to get attributes for '%s'", path);
return -1;
}
}
else
{
- CLog::Log(LOGERROR, "SFTPSession: STAT - Not connected");
+ CLog::Log(LOGERROR, "SFTPSession::Stat - Failed because not connected for '%s'", path);
return -1;
}
}
m_session=ssh_new();
if (m_session == NULL)
{
- CLog::Log(LOGERROR, "SFTPSession: Failed to initialize session");
+ CLog::Log(LOGERROR, "SFTPSession: Failed to initialize session for host '%s'", host.c_str());
return false;
}
return session->FileExists(url.GetFileName().c_str());
else
{
- CLog::Log(LOGERROR, "SFTPFile: Failed to create session to check exists");
+ CLog::Log(LOGERROR, "SFTPFile: Failed to create session to check exists for '%s'", url.GetFileName().c_str());
return false;
}
}
return session->Stat(url.GetFileName().c_str(), buffer);
else
{
- CLog::Log(LOGERROR, "SFTPFile: Failed to create session to stat");
+ CLog::Log(LOGERROR, "SFTPFile: Failed to create session to stat for '%s'", url.GetFileName().c_str());
return -1;
}
}
if (m_session)
return m_session->Stat(m_file.c_str(), buffer);
- CLog::Log(LOGERROR, "SFTPFile: Can't stat without a session");
+ CLog::Log(LOGERROR, "SFTPFile: Can't stat without a session for '%s'", m_file.c_str());
return -1;
}
if (m_session && m_sftp_handle)
return m_session->GetPosition(m_sftp_handle);
- CLog::Log(LOGERROR, "SFTPFile: Can't get position without a filehandle");
+ CLog::Log(LOGERROR, "SFTPFile: Can't get position without a filehandle for '%s'", m_file.c_str());
return 0;
}
#include "GUIAudioManager.h"
#include "Key.h"
#include "input/ButtonTranslator.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "threads/SingleLock.h"
#include "utils/URIUtils.h"
#include "utils/XBMCTinyXML.h"
#include <map>
#include "cores/AudioEngine/Interfaces/AESound.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "threads/CriticalSection.h"
#include "utils/log.h"
#include "utils/StdString.h"
#include "utils/log.h"
#include "utils/SortUtils.h"
#include "utils/StringUtils.h"
-#include "GUIStaticItem.h"
+#include "FileItem.h"
#include "Key.h"
#include "utils/MathUtils.h"
#include "utils/XBMCTinyXML.h"
+#include "listproviders/IListProvider.h"
using namespace std;
m_pageControl = 0;
m_orientation = orientation;
m_analogScrollCount = 0;
- m_staticContent = false;
- m_staticUpdateTime = 0;
- m_staticDefaultItem = -1;
- m_staticDefaultAlways = false;
m_wasReset = false;
m_layout = NULL;
m_focusedLayout = NULL;
m_cacheItems = preloadItems;
m_scrollItemsPerFrame = 0.0f;
m_type = VIEW_TYPE_NONE;
+ m_listProvider = NULL;
}
CGUIBaseContainer::~CGUIBaseContainer(void)
{
+ delete m_listProvider;
}
void CGUIBaseContainer::DoProcess(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
if (message.GetControlId() == GetID() )
{
- if (!m_staticContent)
+ if (!m_listProvider)
{
if (message.GetMessage() == GUI_MSG_LABEL_BIND && message.GetPointer())
{ // bind our items
int subItem = 0;
if (actionID == ACTION_SELECT_ITEM || actionID == ACTION_MOUSE_LEFT_CLICK)
{
- if (m_staticContent)
+ if (m_listProvider)
{ // "select" action
int selected = GetSelectedItem();
if (selected >= 0 && selected < (int)m_items.size())
- {
- CGUIStaticItemPtr item = boost::static_pointer_cast<CGUIStaticItem>(m_items[selected]);
- item->GetClickActions().ExecuteActions(GetID(), GetParentID());
- }
+ m_listProvider->OnClick(m_items[selected]);
return true;
}
// grab the currently focused subitem (if applicable)
void CGUIBaseContainer::SaveStates(vector<CControlState> &states)
{
- if (!m_staticDefaultAlways)
+ if (!m_listProvider || !m_listProvider->AlwaysFocusDefaultItem())
states.push_back(CControlState(GetID(), GetSelectedItem()));
}
{
CGUIControl::AllocResources();
CalculateLayout();
- UpdateStaticItems(true);
- if (m_staticDefaultItem != -1) // select default item
- SelectStaticItemById(m_staticDefaultItem);
+ UpdateListProvider(true);
+ if (m_listProvider)
+ SelectItem(m_listProvider->GetDefaultItem());
}
void CGUIBaseContainer::FreeResources(bool immediately)
{
CGUIControl::FreeResources(immediately);
- if (m_staticContent)
- { // free any static content
+ if (m_listProvider)
+ {
Reset();
+ m_listProvider->Reset();
}
m_scroller.Stop();
}
SelectItem(itemIndex);
}
- UpdateStaticItems();
+ UpdateListProvider();
}
-void CGUIBaseContainer::UpdateStaticItems(bool refreshItems)
+void CGUIBaseContainer::UpdateListProvider(bool refreshItems)
{
- if (m_staticContent)
- { // update our item list with our new content, but only add those items that should
- // be visible. Save the previous item and keep it if we are adding that one.
- std::vector<CGUIListItemPtr> items;
- int reselect = -1;
- int selected = GetSelectedItem();
- CGUIListItem* selectedItem = (selected >= 0 && (unsigned int)selected < m_items.size()) ? m_items[selected].get() : NULL;
- bool updateItemsProperties = false;
- if (!m_staticUpdateTime)
- m_staticUpdateTime = CTimeUtils::GetFrameTime();
- if (CTimeUtils::GetFrameTime() - m_staticUpdateTime > 1000)
- {
- m_staticUpdateTime = CTimeUtils::GetFrameTime();
- updateItemsProperties = true;
- }
- for (unsigned int i = 0; i < m_staticItems.size(); ++i)
- {
- CGUIStaticItemPtr staticItem = boost::static_pointer_cast<CGUIStaticItem>(m_staticItems[i]);
- if (staticItem->UpdateVisibility(GetParentID()))
- refreshItems = true;
- if (staticItem->IsVisible())
- {
- items.push_back(staticItem);
- // if item is selected and it changed position, re-select it
- if (staticItem.get() == selectedItem && selected != (int)items.size() - 1)
- reselect = items.size() - 1;
- }
- // update any properties
- if (updateItemsProperties)
- staticItem->UpdateProperties(GetParentID());
- }
- if (refreshItems)
+ if (m_listProvider)
+ {
+ if (m_listProvider->Update(refreshItems))
{
+ // save the current item
+ int currentItem = GetSelectedItem();
+ CGUIListItem *current = (currentItem >= 0 && currentItem < (int)m_items.size()) ? m_items[currentItem].get() : NULL;
Reset();
- m_items = items;
+ m_listProvider->Fetch(m_items);
SetPageControlRange();
- if (reselect >= 0 && reselect < (int)m_items.size())
- SelectItem(reselect);
+ // update the newly selected item
+ bool found = false;
+ for (int i = 0; i < (int)m_items.size(); i++)
+ {
+ if (m_items[i].get() == current)
+ {
+ found = true;
+ if (i != currentItem)
+ {
+ SelectItem(i);
+ break;
+ }
+ }
+ }
+ if (!found && currentItem >= (int)m_items.size())
+ SelectItem(m_items.size()-1);
SetInvalid();
}
+ // always update the scroll by letter, as the list provider may have altered labels
+ // while not actually changing the list items.
UpdateScrollByLetter();
}
}
}
}
-void CGUIBaseContainer::LoadContent(TiXmlElement *content)
+void CGUIBaseContainer::LoadListProvider(TiXmlElement *content, int defaultItem, bool defaultAlways)
{
- TiXmlElement *root = content->FirstChildElement("content");
- if (!root)
- return;
-
- vector<CGUIListItemPtr> items;
- TiXmlElement *item = root->FirstChildElement("item");
- while (item)
- {
- if (item->FirstChild())
- {
- CGUIStaticItemPtr newItem(new CGUIStaticItem(item, GetParentID()));
- items.push_back(newItem);
- }
- item = item->NextSiblingElement("item");
- }
- SetStaticContent(items, false);
+ delete m_listProvider;
+ m_listProvider = IListProvider::Create(content, GetParentID());
+ if (m_listProvider)
+ m_listProvider->SetDefaultItem(defaultItem, defaultAlways);
}
-void CGUIBaseContainer::SetStaticContent(const vector<CGUIListItemPtr> &items, bool forceUpdate /* = true */)
+void CGUIBaseContainer::SetListProvider(IListProvider *provider)
{
- m_staticContent = true;
- m_staticUpdateTime = 0;
- m_staticItems.clear();
- m_staticItems.assign(items.begin(), items.end());
- if (forceUpdate)
- UpdateStaticItems(true);
+ delete m_listProvider;
+ m_listProvider = provider;
+ UpdateListProvider(true);
}
void CGUIBaseContainer::SetRenderOffset(const CPoint &offset)
bool CGUIBaseContainer::CanFocus() const
{
- return (!m_items.empty() && CGUIControl::CanFocus());
-}
-
-void CGUIBaseContainer::SelectStaticItemById(int id)
-{
- if (m_staticContent)
+ if (CGUIControl::CanFocus())
{
- for (unsigned int i = 0 ; i < m_items.size() ; i++)
- {
- CGUIStaticItemPtr item = boost::static_pointer_cast<CGUIStaticItem>(m_items[i]);
- if (item->m_iprogramCount == id)
- {
- SelectItem(i);
- return;
- }
- }
+ /*
+ We allow focus if we have items available or if we have a list provider
+ that's in the process of updating.
+ */
+ return !m_items.empty() || (m_listProvider && m_listProvider->IsUpdating());
}
+ return false;
}
void CGUIBaseContainer::OnFocus()
{
- if (m_staticDefaultAlways)
- SelectStaticItemById(m_staticDefaultItem);
+ if (m_listProvider && m_listProvider->AlwaysFocusDefaultItem())
+ SelectItem(m_listProvider->GetDefaultItem());
CGUIControl::OnFocus();
}
\brief
*/
+class IListProvider;
+
class CGUIBaseContainer : public IGUIContainer
{
public:
virtual void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions);
void LoadLayout(TiXmlElement *layout);
- void LoadContent(TiXmlElement *content);
- void SetDefaultControl(int id, bool always) { m_staticDefaultItem = id; m_staticDefaultAlways = always; };
+ void LoadListProvider(TiXmlElement *content, int defaultItem, bool defaultAlways);
virtual CGUIListItemPtr GetListItem(int offset, unsigned int flag = 0) const;
virtual bool GetCondition(int condition, int data) const;
virtual CStdString GetLabel(int info) const;
- void SetStaticContent(const std::vector<CGUIListItemPtr> &items, bool forceUpdate = true);
-
+ /*! \brief Set the list provider for this container (for python).
+ \param provider the list provider to use for this container.
+ */
+ void SetListProvider(IListProvider *provider);
+
/*! \brief Set the offset of the first item in the container from the container's position
Useful for lists/panels where the focused item may be larger than the non-focused items and thus
normally cut off from the clipping window defined by the container's position + size.
virtual void UpdatePageControl(int offset);
virtual void CalculateLayout();
virtual void SelectItem(int item) {};
- void SelectStaticItemById(int id);
virtual bool SelectItemFromPoint(const CPoint &point) { return false; };
virtual int GetCursorFromPoint(const CPoint &point, CPoint *itemPoint = NULL) const { return -1; };
virtual void Reset();
virtual int GetCurrentPage() const;
bool InsideLayout(const CGUIListItemLayout *layout, const CPoint &point) const;
virtual void OnFocus();
- void UpdateStaticItems(bool refreshItems = false);
+ void UpdateListProvider(bool refreshItems = false);
int ScrollCorrectionRange() const;
inline float Size() const;
CScroller m_scroller;
- bool m_staticContent;
- bool m_staticDefaultAlways;
- int m_staticDefaultItem;
- unsigned int m_staticUpdateTime;
- std::vector<CGUIListItemPtr> m_staticItems;
+ IListProvider *m_listProvider;
+
bool m_wasReset; // true if we've received a Reset message until we've rendered once. Allows
// us to make sure we don't tell the infomanager that we've been moving when
// the "movement" was simply due to the list being repopulated (thus cursor position
return; // nothing to do
path = URIUtils::AddFileToFolder(basePath, colorFile);
+ if (!URIUtils::HasExtension(path))
+ path += ".xml";
CLog::Log(LOGINFO, "Loading colors from %s", path.c_str());
if (xmlDoc.LoadFile(path))
control = new CGUIListContainer(parentID, id, posX, posY, width, height, orientation, scroller, preloadItems);
((CGUIListContainer *)control)->LoadLayout(pControlNode);
- ((CGUIListContainer *)control)->LoadContent(pControlNode);
- ((CGUIListContainer *)control)->SetDefaultControl(defaultControl, defaultAlways);
+ ((CGUIListContainer *)control)->LoadListProvider(pControlNode, defaultControl, defaultAlways);
((CGUIListContainer *)control)->SetType(viewType, viewLabel);
((CGUIListContainer *)control)->SetPageControl(pageControl);
((CGUIListContainer *)control)->SetRenderOffset(offset);
control = new CGUIWrappingListContainer(parentID, id, posX, posY, width, height, orientation, scroller, preloadItems, focusPosition);
((CGUIWrappingListContainer *)control)->LoadLayout(pControlNode);
- ((CGUIWrappingListContainer *)control)->LoadContent(pControlNode);
- ((CGUIWrappingListContainer *)control)->SetDefaultControl(defaultControl, defaultAlways);
+ ((CGUIWrappingListContainer *)control)->LoadListProvider(pControlNode, defaultControl, defaultAlways);
((CGUIWrappingListContainer *)control)->SetType(viewType, viewLabel);
((CGUIWrappingListContainer *)control)->SetPageControl(pageControl);
((CGUIWrappingListContainer *)control)->SetRenderOffset(offset);
control = new CGUIFixedListContainer(parentID, id, posX, posY, width, height, orientation, scroller, preloadItems, focusPosition, iMovementRange);
((CGUIFixedListContainer *)control)->LoadLayout(pControlNode);
- ((CGUIFixedListContainer *)control)->LoadContent(pControlNode);
- ((CGUIFixedListContainer *)control)->SetDefaultControl(defaultControl, defaultAlways);
+ ((CGUIFixedListContainer *)control)->LoadListProvider(pControlNode, defaultControl, defaultAlways);
((CGUIFixedListContainer *)control)->SetType(viewType, viewLabel);
((CGUIFixedListContainer *)control)->SetPageControl(pageControl);
((CGUIFixedListContainer *)control)->SetRenderOffset(offset);
control = new CGUIPanelContainer(parentID, id, posX, posY, width, height, orientation, scroller, preloadItems);
((CGUIPanelContainer *)control)->LoadLayout(pControlNode);
- ((CGUIPanelContainer *)control)->LoadContent(pControlNode);
- ((CGUIPanelContainer *)control)->SetDefaultControl(defaultControl, defaultAlways);
+ ((CGUIPanelContainer *)control)->LoadListProvider(pControlNode, defaultControl, defaultAlways);
((CGUIPanelContainer *)control)->SetType(viewType, viewLabel);
((CGUIPanelContainer *)control)->SetPageControl(pageControl);
((CGUIPanelContainer *)control)->SetRenderOffset(offset);
#include "filesystem/Directory.h"
#include "filesystem/File.h"
#include "filesystem/SpecialProtocol.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "utils/log.h"
#include "utils/URIUtils.h"
#include "utils/StringUtils.h"
const char *id = item->Attribute("id");
CStdString condition;
CGUIControlFactory::GetConditionalVisibility(item, condition);
- m_visCondition = g_infoManager.Register(condition, parentID);
+ SetVisibleCondition(condition, parentID);
CGUIControlFactory::GetActions(item, "onclick", m_clickActions);
SetLabel(label.GetLabel(parentID));
SetLabel2(label2.GetLabel(parentID));
m_iprogramCount = id ? atoi(id) : 0;
}
}
-
+
+CGUIStaticItem::CGUIStaticItem(const CFileItem &item)
+: CFileItem(item)
+{
+ m_visCondition = 0;
+ m_visState = false;
+}
+
void CGUIStaticItem::UpdateProperties(int contextWindow)
{
for (InfoVector::const_iterator i = m_info.begin(); i != m_info.end(); ++i)
return m_visState;
return true;
}
+
+void CGUIStaticItem::SetVisibleCondition(const std::string &condition, int context)
+{
+ m_visCondition = g_infoManager.Register(condition, context);
+ m_visState = false;
+}
\param contextWindow window context to use for any info labels
*/
CGUIStaticItem(const TiXmlElement *element, int contextWindow);
+ CGUIStaticItem(const CFileItem &item); // for python
virtual ~CGUIStaticItem() {};
virtual CGUIListItem *Clone() const { return new CGUIStaticItem(*this); };
*/
bool IsVisible() const;
+ /*! \brief set a visible condition for this item.
+ \param condition the condition to use.
+ \param context the context for the condition (typically a window id).
+ */
+ void SetVisibleCondition(const std::string &condition, int context);
+
const CGUIAction &GetClickActions() const { return m_clickActions; };
private:
typedef std::vector< std::pair<CGUIInfoLabel, CStdString> > InfoVector;
#include "ApplicationMessenger.h"
#include "settings/AdvancedSettings.h"
#include "settings/DisplaySettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "cores/VideoRenderers/RenderManager.h"
#include "windowing/WindowingFactory.h"
#include "Resolution.h"
#include "utils/GlobalsHandling.h"
#include "DirtyRegion.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "rendering/RenderSystem.h"
enum VIEW_TYPE { VIEW_TYPE_NONE = 0,
#include "guilib/Key.h"
#include "guilib/GUIWindowManager.h"
#include "settings/AdvancedSettings.h"
-#include "settings/ISettingCallback.h"
-#include "settings/Setting.h"
+#include "settings/lib/ISettingCallback.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "rendering/RenderSystem.h"
#include "utils/log.h"
#pragma once
#include <stdlib.h>
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "guilib/IMsgTargetCallback.h"
#include "rendering/RenderSystem.h"
#define WINDOW_DIALOG_PERIPHERAL_SETTINGS 10150
#define WINDOW_DIALOG_EXT_PROGRESS 10151
#define WINDOW_DIALOG_MEDIA_FILTER 10152
+#define WINDOW_DIALOG_SUBTITLES 10153
#define WINDOW_MUSIC_PLAYLIST 10500
#define WINDOW_MUSIC_FILES 10501
{"karaokelargeselector" , WINDOW_DIALOG_KARAOKE_SELECTOR},
{"sliderdialog" , WINDOW_DIALOG_SLIDER},
{"addoninformation" , WINDOW_DIALOG_ADDON_INFO},
+ {"subtitlesearch" , WINDOW_DIALOG_SUBTITLES},
{"musicplaylist" , WINDOW_MUSIC_PLAYLIST},
{"musicfiles" , WINDOW_MUSIC_FILES},
{"musiclibrary" , WINDOW_MUSIC_NAV},
#include "MouseStat.h"
#include "guilib/Key.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "utils/TimeUtils.h"
#include "windowing/WindowingFactory.h"
*
*/
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "windowing/XBMC_events.h"
#define XBMC_BUTTON(X) (1 << ((X)-1))
#include "ButtonTranslator.h"
#include "peripherals/devices/PeripheralImon.h"
#include "settings/AdvancedSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "utils/log.h"
+#include "utils/StringUtils.h"
#include <math.h>
continue;
}
#endif
-
- m_Joysticks.push_back(joy);
if (joy)
{
- m_JoystickNames.push_back(string(SDL_JoystickName(i)));
- CLog::Log(LOGNOTICE, "Enabled Joystick: %s", SDL_JoystickName(i));
- CLog::Log(LOGNOTICE, "Details: Total Axis: %d Total Hats: %d Total Buttons: %d",
- SDL_JoystickNumAxes(joy), SDL_JoystickNumHats(joy), SDL_JoystickNumButtons(joy));
+ // Some (Microsoft) Keyboards are recognized as Joysticks by modern kernels
+ // Don't enumerate them
+ // https://bugs.launchpad.net/ubuntu/+source/linux/+bug/390959
+ // NOTICE: Enabled Joystick: Microsoft Wired Keyboard 600
+ // Details: Total Axis: 37 Total Hats: 0 Total Buttons: 57
+ // NOTICE: Enabled Joystick: Microsoft Microsoft® 2.4GHz Transceiver v6.0
+ // Details: Total Axis: 37 Total Hats: 0 Total Buttons: 57
+ int num_axis = SDL_JoystickNumAxes(joy);
+ int num_buttons = SDL_JoystickNumButtons(joy);
+ if (num_axis > 20 && num_buttons > 50)
+ CLog::Log(LOGNOTICE, "Your Joystick seems to be a Keyboard, ignoring it: %s Axis: %d Buttons: %d",
+ SDL_JoystickName(i), num_axis, num_buttons);
+ else
+ {
+ m_JoystickNames.push_back(string(SDL_JoystickName(i)));
+ CLog::Log(LOGNOTICE, "Enabled Joystick: %s", SDL_JoystickName(i));
+ CLog::Log(LOGNOTICE, "Details: Total Axis: %d Total Hats: %d Total Buttons: %d",
+ num_axis, SDL_JoystickNumHats(joy), num_buttons);
+ m_Joysticks.push_back(joy);
+ }
}
else
{
#define SDL_JOYSTICK_H
#include "system.h" // for HAS_SDL_JOYSTICK
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include <vector>
#include <string>
#include "input/ButtonTranslator.h"
#include "peripherals/devices/PeripheralImon.h"
#include "settings/AdvancedSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "utils/log.h"
#include <math.h>
#include <vector>
#include <string>
#include <stdint.h>
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "threads/CriticalSection.h"
#define JACTIVE_BUTTON 0x00000001
CStdString cmd;
if (plugin && addon->Type() == ADDON_PLUGIN)
{
+ CStdString addonid = params[0];
+ CStdString urlParameters;
+ CStdStringArray parameters;
+ if (params.size() == 2 &&
+ (StringUtils::StartsWith(params[1], "/") || StringUtils::StartsWith(params[1], "?")))
+ urlParameters = params[1];
+ else if (params.size() > 1)
+ {
+ parameters.insert(parameters.begin(), params.begin() + 1, params.end());
+ urlParameters = "?" + StringUtils::JoinString(parameters, "&");
+ }
+
if (plugin->Provides(CPluginSource::VIDEO))
- cmd.Format("ActivateWindow(Video,plugin://%s,return)",params[0]);
+ cmd.Format("ActivateWindow(Video,plugin://%s%s,return)", addonid, urlParameters);
else if (plugin->Provides(CPluginSource::AUDIO))
- cmd.Format("ActivateWindow(Music,plugin://%s,return)",params[0]);
+ cmd.Format("ActivateWindow(Music,plugin://%s%s,return)", addonid, urlParameters);
else if (plugin->Provides(CPluginSource::EXECUTABLE))
- cmd.Format("ActivateWindow(Programs,plugin://%s,return)",params[0]);
+ cmd.Format("ActivateWindow(Programs,plugin://%s%s,return)", addonid, urlParameters);
else if (plugin->Provides(CPluginSource::IMAGE))
- cmd.Format("ActivateWindow(Pictures,plugin://%s,return)",params[0]);
+ cmd.Format("ActivateWindow(Pictures,plugin://%s%s,return)", addonid, urlParameters);
else
// Pass the script name (params[0]) and all the parameters
// (params[1] ... params[x]) separated by a comma to RunPlugin
else if (execute.Equals("reloadskin"))
{
// Reload the skin
- g_application.ReloadSkin();
+ g_application.ReloadSkin(!params.empty() && StringUtils::EqualsNoCase(params[0], "confirm"));
}
else if (execute.Equals("unloadskin"))
{
argv += StringUtils::Paramify(it->asString());
}
}
+ else if (params.isString())
+ {
+ if (!params.empty())
+ argv = StringUtils::Paramify(params.asString());
+ }
CStdString cmd;
if (params.size() == 0)
#include "ProfilesOperations.h"
#include "FavouritesOperations.h"
#include "TextureOperations.h"
+#include "SettingsOperations.h"
using namespace std;
using namespace JSONRPC;
{ "Textures.GetTextures", CTextureOperations::GetTextures },
{ "Textures.RemoveTexture", CTextureOperations::RemoveTexture },
+// Settings operations
+ { "Settings.GetSections", CSettingsOperations::GetSections },
+ { "Settings.GetCategories", CSettingsOperations::GetCategories },
+ { "Settings.GetSettings", CSettingsOperations::GetSettings },
+ { "Settings.GetSettingValue", CSettingsOperations::GetSettingValue },
+ { "Settings.SetSettingValue", CSettingsOperations::SetSettingValue },
+ { "Settings.ResetSettingValue", CSettingsOperations::ResetSettingValue },
+
// XBMC operations
{ "XBMC.GetInfoLabels", CXBMCOperations::GetInfoLabels },
{ "XBMC.GetInfoBooleans", CXBMCOperations::GetInfoBooleans }
PlaylistOperations.cpp \
ProfilesOperations.cpp \
PVROperations.cpp \
+ SettingsOperations.cpp \
SystemOperations.cpp \
TextureOperations.cpp \
VideoLibrary.cpp \
namespace JSONRPC
{
const char* const JSONRPC_SERVICE_ID = "http://xbmc.org/jsonrpc/ServiceDescription.json";
- const char* const JSONRPC_SERVICE_VERSION = "6.12.0";
+ const char* const JSONRPC_SERVICE_VERSION = "6.13.0";
const char* const JSONRPC_SERVICE_DESCRIPTION = "JSON-RPC API of XBMC";
const char* const JSONRPC_SERVICE_TYPES[] = {
"\"thumbnail\": { \"type\": \"string\" }"
"},"
"\"additionalProperties\": false"
+ "}",
+ "\"Setting.Type\": {"
+ "\"type\": \"string\","
+ "\"enum\": ["
+ "\"boolean\", \"integer\", \"number\", \"string\", \"action\", \"list\","
+ "\"path\", \"addon\""
+ "]"
+ "}",
+ "\"Setting.Level\": {"
+ "\"type\": \"string\","
+ "\"enum\": [ \"basic\", \"standard\", \"advanced\", \"expert\" ]"
+ "}",
+ "\"Setting.Value\": {"
+ "\"type\": ["
+ "{ \"type\": \"boolean\", \"required\": true },"
+ "{ \"type\": \"integer\", \"required\": true },"
+ "{ \"type\": \"number\", \"required\": true },"
+ "{ \"type\": \"string\", \"required\": true }"
+ "]"
+ "}",
+ "\"Setting.Value.List\": {"
+ "\"type\": \"array\","
+ "\"items\": { \"$ref\": \"Setting.Value\" }"
+ "}",
+ "\"Setting.Value.Extended\": {"
+ "\"type\": ["
+ "{ \"type\": \"boolean\", \"required\": true },"
+ "{ \"type\": \"integer\", \"required\": true },"
+ "{ \"type\": \"number\", \"required\": true },"
+ "{ \"type\": \"string\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Value.List\", \"required\": true }"
+ "]"
+ "}",
+ "\"Setting.Details.ControlBase\": {"
+ "\"type\": \"object\","
+ "\"properties\": {"
+ "\"type\": { \"type\": \"string\", \"required\": true },"
+ "\"format\": { \"type\": \"string\", \"required\": true },"
+ "\"delayed\": { \"type\": \"boolean\", \"required\": true }"
+ "}"
+ "}",
+ "\"Setting.Details.ControlCheckmark\": {"
+ "\"extends\": \"Setting.Details.ControlBase\","
+ "\"properties\": {"
+ "\"type\": { \"type\": \"string\", \"required\": true, \"enum\": [ \"toggle\" ] },"
+ "\"format\": { \"type\": \"string\", \"required\": true, \"enum\": [ \"boolean\" ] }"
+ "}"
+ "}",
+ "\"Setting.Details.ControlSpinner\": {"
+ "\"extends\": \"Setting.Details.ControlBase\","
+ "\"properties\": {"
+ "\"type\": { \"type\": \"string\", \"required\": true, \"enum\": [ \"spinner\" ] },"
+ "\"formatlabel\": { \"type\": \"string\" },"
+ "\"minimumlabel\": { \"type\": \"string\" }"
+ "}"
+ "}",
+ "\"Setting.Details.ControlHeading\": {"
+ "\"extends\": \"Setting.Details.ControlBase\","
+ "\"properties\": {"
+ "\"heading\": { \"type\": \"string\" }"
+ "}"
+ "}",
+ "\"Setting.Details.ControlEdit\": {"
+ "\"extends\": \"Setting.Details.ControlHeading\","
+ "\"properties\": {"
+ "\"type\": { \"type\": \"string\", \"required\": true, \"enum\": [ \"edit\" ] },"
+ "\"hidden\": { \"type\": \"boolean\", \"required\": true },"
+ "\"verifynewvalue\": { \"type\": \"boolean\", \"required\": true }"
+ "}"
+ "}",
+ "\"Setting.Details.ControlButton\": {"
+ "\"extends\": \"Setting.Details.ControlHeading\","
+ "\"properties\": {"
+ "\"type\": { \"type\": \"string\", \"required\": true, \"enum\": [ \"button\" ] }"
+ "}"
+ "}",
+ "\"Setting.Details.ControlList\": {"
+ "\"extends\": \"Setting.Details.ControlHeading\","
+ "\"properties\": {"
+ "\"type\": { \"type\": \"string\", \"required\": true, \"enum\": [ \"list\" ] },"
+ "\"multiselect\": { \"type\": \"boolean\", \"required\": true }"
+ "}"
+ "}",
+ "\"Setting.Details.Control\": {"
+ "\"type\": ["
+ "{ \"$ref\": \"Setting.Details.ControlCheckmark\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.ControlSpinner\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.ControlEdit\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.ControlButton\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.ControlList\", \"required\": true }"
+ "]"
+ "}",
+ "\"Setting.Details.Base\": {"
+ "\"type\": \"object\","
+ "\"properties\": {"
+ "\"id\": { \"type\": \"string\", \"required\": true, \"minLength\": 1 },"
+ "\"label\": { \"type\": \"string\", \"required\": true },"
+ "\"help\": { \"type\": \"string\" }"
+ "}"
+ "}",
+ "\"Setting.Details.SettingBase\": {"
+ "\"extends\": \"Setting.Details.Base\","
+ "\"properties\": {"
+ "\"type\": { \"$ref\": \"Setting.Type\", \"required\": true },"
+ "\"enabled\": { \"type\": \"boolean\", \"required\": true },"
+ "\"level\": { \"type\": \"integer\", \"required\": true },"
+ "\"parent\": { \"type\": \"string\" },"
+ "\"control\": { \"$ref\": \"Setting.Details.Control\" }"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.SettingBool\": {"
+ "\"extends\": \"Setting.Details.SettingBase\","
+ "\"properties\": {"
+ "\"value\": { \"type\": \"boolean\", \"required\": true },"
+ "\"default\": { \"type\": \"boolean\", \"required\": true }"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.SettingInt\": {"
+ "\"extends\": \"Setting.Details.SettingBase\","
+ "\"properties\": {"
+ "\"value\": { \"type\": \"integer\", \"required\": true },"
+ "\"default\": { \"type\": \"integer\", \"required\": true },"
+ "\"minimum\": { \"type\": \"integer\" },"
+ "\"step\": { \"type\": \"integer\" },"
+ "\"maximum\": { \"type\": \"integer\" },"
+ "\"options\": { \"type\": \"array\","
+ "\"items\": { \"type\": \"object\","
+ "\"properties\": {"
+ "\"label\": { \"type\": \"string\", \"required\": true },"
+ "\"value\": { \"type\": \"integer\", \"required\": true }"
+ "}"
+ "}"
+ "}"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.SettingNumber\": {"
+ "\"extends\": \"Setting.Details.SettingBase\","
+ "\"properties\": {"
+ "\"value\": { \"type\": \"number\", \"required\": true },"
+ "\"default\": { \"type\": \"number\", \"required\": true },"
+ "\"minimum\": { \"type\": \"number\", \"required\": true },"
+ "\"step\": { \"type\": \"number\", \"required\": true },"
+ "\"maximum\": { \"type\": \"number\", \"required\": true }"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.SettingString\": {"
+ "\"extends\": \"Setting.Details.SettingBase\","
+ "\"properties\": {"
+ "\"value\": { \"type\": \"string\", \"required\": true },"
+ "\"default\": { \"type\": \"string\", \"required\": true },"
+ "\"allowempty\": { \"type\": \"boolean\", \"required\": true },"
+ "\"options\": { \"type\": \"array\","
+ "\"items\": { \"type\": \"object\","
+ "\"properties\": {"
+ "\"label\": { \"type\": \"string\", \"required\": true },"
+ "\"value\": { \"type\": \"string\", \"required\": true }"
+ "}"
+ "}"
+ "}"
+ "}"
+ "}",
+ "\"Setting.Details.SettingAction\": {"
+ "\"extends\": \"Setting.Details.SettingBase\","
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.SettingList\": {"
+ "\"extends\": \"Setting.Details.SettingBase\","
+ "\"properties\": {"
+ "\"value\": { \"$ref\": \"Setting.Value.List\", \"required\": true },"
+ "\"default\": { \"$ref\": \"Setting.Value.List\", \"required\": true },"
+ "\"elementtype\": { \"$ref\": \"Setting.Type\", \"required\": true },"
+ "\"definition\": { \"$ref\": \"Setting.Details.Setting\", \"required\": true },"
+ "\"delimiter\": { \"type\": \"string\", \"required\": true },"
+ "\"minimum\": { \"type\": \"integer\" },"
+ "\"maximum\": { \"type\": \"integer\" }"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.SettingPath\": {"
+ "\"extends\": \"Setting.Details.SettingString\","
+ "\"properties\": {"
+ "\"writable\": { \"type\": \"boolean\", \"required\": true },"
+ "\"sources\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.SettingAddon\": {"
+ "\"extends\": \"Setting.Details.SettingString\","
+ "\"properties\": {"
+ "\"addontype\": { \"$ref\": \"Addon.Types\", \"required\": true }"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.Setting\": {"
+ "\"type\": ["
+ "{ \"$ref\": \"Setting.Details.SettingBool\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.SettingInt\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.SettingNumber\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.SettingString\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.SettingAction\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.SettingList\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.SettingPath\", \"required\": true },"
+ "{ \"$ref\": \"Setting.Details.SettingAddon\", \"required\": true }"
+ "]"
+ "}",
+ "\"Setting.Details.Group\": {"
+ "\"type\": \"object\","
+ "\"properties\": {"
+ "\"id\": { \"type\": \"string\", \"required\": true, \"minLength\": 1 },"
+ "\"settings\": {"
+ "\"type\": \"array\","
+ "\"items\": { \"$ref\": \"Setting.Details.Setting\" },"
+ "\"minItems\": 1,"
+ "\"uniqueItems\": true"
+ "}"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.Category\": {"
+ "\"extends\": \"Setting.Details.Base\","
+ "\"properties\": {"
+ "\"groups\": {"
+ "\"type\": \"array\","
+ "\"items\": { \"$ref\": \"Setting.Details.Group\" },"
+ "\"minItems\": 1,"
+ "\"uniqueItems\": true"
+ "}"
+ "},"
+ "\"additionalProperties\": false"
+ "}",
+ "\"Setting.Details.Section\": {"
+ "\"extends\": \"Setting.Details.Base\","
+ "\"properties\": {"
+ "\"categories\": {"
+ "\"type\": \"array\","
+ "\"items\": { \"$ref\": \"Setting.Details.Category\" },"
+ "\"minItems\": 1,"
+ "\"uniqueItems\": true"
+ "}"
+ "},"
+ "\"additionalProperties\": false"
"}"
};
"{ \"name\": \"addonid\", \"type\": \"string\", \"required\": true },"
"{ \"name\": \"params\", \"type\": ["
"{ \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },"
- "{ \"type\": \"array\", \"items\": { \"type\": \"string\" } }"
- "]"
+ "{ \"type\": \"array\", \"items\": { \"type\": \"string\" } },"
+ "{ \"type\": \"string\", \"description\": \"URL path (must start with / or ?\" }"
+ "],"
+ "\"default\": \"\""
"},"
"{ \"name\": \"wait\", \"type\": \"boolean\", \"default\": false }"
"],"
"{ \"name\": \"thumbnail\", \"$ref\": \"Optional.String\" }"
"],"
"\"returns\": \"string\""
+ "}",
+ "\"Settings.GetSections\": {"
+ "\"type\": \"method\","
+ "\"description\": \"Retrieves all setting sections\","
+ "\"transport\": \"Response\","
+ "\"permission\": \"ReadData\","
+ "\"params\": ["
+ "{ \"name\": \"level\", \"$ref\": \"Setting.Level\", \"default\": \"standard\" },"
+ "{ \"name\": \"properties\", \"extends\": \"Item.Fields.Base\","
+ "\"items\": { \"type\": \"string\","
+ "\"enum\": [ \"categories\" ]"
+ "}"
+ "}"
+ "],"
+ "\"returns\": {"
+ "\"type\": \"object\","
+ "\"properties\": {"
+ "\"sections\": { \"type\": \"array\","
+ "\"items\": { \"$ref\": \"Setting.Details.Section\" }"
+ "}"
+ "}"
+ "}"
+ "}",
+ "\"Settings.GetCategories\": {"
+ "\"type\": \"method\","
+ "\"description\": \"Retrieves all setting categories\","
+ "\"transport\": \"Response\","
+ "\"permission\": \"ReadData\","
+ "\"params\": ["
+ "{ \"name\": \"level\", \"$ref\": \"Setting.Level\", \"default\": \"standard\" },"
+ "{ \"name\": \"section\", \"type\": \"string\", \"default\": \"\" },"
+ "{ \"name\": \"properties\", \"extends\": \"Item.Fields.Base\","
+ "\"items\": { \"type\": \"string\","
+ "\"enum\": [ \"settings\" ]"
+ "}"
+ "}"
+ "],"
+ "\"returns\": {"
+ "\"type\": \"object\","
+ "\"properties\": {"
+ "\"categories\": { \"type\": \"array\","
+ "\"items\": { \"$ref\": \"Setting.Details.Category\" }"
+ "}"
+ "}"
+ "}"
+ "}",
+ "\"Settings.GetSettings\": {"
+ "\"type\": \"method\","
+ "\"description\": \"Retrieves all settings\","
+ "\"transport\": \"Response\","
+ "\"permission\": \"ReadData\","
+ "\"params\": ["
+ "{ \"name\": \"level\", \"$ref\": \"Setting.Level\", \"default\": \"standard\" },"
+ "{ \"name\": \"filter\", \"type\": ["
+ "{ \"type\": \"object\","
+ "\"properties\": {"
+ "\"section\": { \"type\": \"string\", \"required\": true, \"minLength\": 1 },"
+ "\"category\": { \"type\": \"string\", \"required\": true, \"minLength\": 1 }"
+ "},"
+ "\"additionalProperties\": false,"
+ "\"required\": true"
+ "}"
+ "],"
+ "\"default\": null"
+ "}"
+ "],"
+ "\"returns\": {"
+ "\"type\": \"object\","
+ "\"properties\": {"
+ "\"settings\": { \"type\": \"array\","
+ "\"items\": { \"$ref\": \"Setting.Details.Setting\" }"
+ "}"
+ "}"
+ "}"
+ "}",
+ "\"Settings.GetSettingValue\": {"
+ "\"type\": \"method\","
+ "\"description\": \"Retrieves the value of a setting\","
+ "\"transport\": \"Response\","
+ "\"permission\": \"ReadData\","
+ "\"params\": ["
+ "{ \"name\": \"setting\", \"type\": \"string\", \"required\": true, \"minLength\": 1 }"
+ "],"
+ "\"returns\": {"
+ "\"type\": \"object\","
+ "\"properties\": {"
+ "\"value\": { \"$ref\": \"Setting.Value.Extended\", \"required\": true }"
+ "}"
+ "}"
+ "}",
+ "\"Settings.SetSettingValue\": {"
+ "\"type\": \"method\","
+ "\"description\": \"Changes the value of a setting\","
+ "\"transport\": \"Response\","
+ "\"permission\": \"WriteSetting\","
+ "\"params\": ["
+ "{ \"name\": \"setting\", \"type\": \"string\", \"required\": true, \"minLength\": 1 },"
+ "{ \"name\": \"value\", \"$ref\": \"Setting.Value.Extended\", \"required\": true }"
+ "],"
+ "\"returns\": \"boolean\""
+ "}",
+ "\"Settings.ResetSettingValue\": {"
+ "\"type\": \"method\","
+ "\"description\": \"Resets the value of a setting\","
+ "\"transport\": \"Response\","
+ "\"permission\": \"WriteSetting\","
+ "\"params\": ["
+ "{ \"name\": \"setting\", \"type\": \"string\", \"required\": true, \"minLength\": 1 }"
+ "],"
+ "\"returns\": \"string\""
"}"
};
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "SettingsOperations.h"
+#include "addons/Addon.h"
+#include "settings/SettingAddon.h"
+#include "settings/SettingControl.h"
+#include "settings/SettingPath.h"
+#include "settings/Settings.h"
+#include "settings/lib/Setting.h"
+#include "settings/lib/SettingSection.h"
+#include "guilib/LocalizeStrings.h"
+#include "utils/StringUtils.h"
+
+using namespace std;
+using namespace JSONRPC;
+
+JSONRPC_STATUS CSettingsOperations::GetSections(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
+{
+ SettingLevel level = (SettingLevel)ParseSettingLevel(parameterObject["level"].asString());
+ bool listCategories = !parameterObject["properties"].empty() && parameterObject["properties"][0].asString() == "categories";
+ vector<CSettingSection*> sections;
+
+ result["sections"] = CVariant(CVariant::VariantTypeArray);
+
+ // apply the level filter
+ vector<CSettingSection*> allSections = CSettings::Get().GetSections();
+ for (vector<CSettingSection*>::const_iterator itSection = allSections.begin(); itSection != allSections.end(); ++itSection)
+ {
+ SettingCategoryList categories = (*itSection)->GetCategories(level);
+ if (categories.empty())
+ continue;
+
+ CVariant varSection(CVariant::VariantTypeObject);
+ if (!SerializeSettingSection(*itSection, varSection))
+ continue;
+
+ if (listCategories)
+ {
+ varSection["categories"] = CVariant(CVariant::VariantTypeArray);
+ for (SettingCategoryList::const_iterator itCategory = categories.begin(); itCategory != categories.end(); ++itCategory)
+ {
+ CVariant varCategory(CVariant::VariantTypeObject);
+ if (!SerializeSettingCategory(*itCategory, varCategory))
+ continue;
+
+ varSection["categories"].push_back(varCategory);
+ }
+ }
+
+ result["sections"].push_back(varSection);
+ }
+
+ return OK;
+}
+
+JSONRPC_STATUS CSettingsOperations::GetCategories(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
+{
+ SettingLevel level = (SettingLevel)ParseSettingLevel(parameterObject["level"].asString());
+ std::string strSection = parameterObject["section"].asString();
+ bool listSettings = !parameterObject["properties"].empty() && parameterObject["properties"][0].asString() == "settings";
+
+ vector<CSettingSection*> sections;
+ if (!strSection.empty())
+ {
+ CSettingSection *section = CSettings::Get().GetSection(strSection);
+ if (section == NULL)
+ return InvalidParams;
+
+ sections.push_back(section);
+ }
+ else
+ sections = CSettings::Get().GetSections();
+
+ result["categories"] = CVariant(CVariant::VariantTypeArray);
+
+ for (vector<CSettingSection*>::const_iterator itSection = sections.begin(); itSection != sections.end(); ++itSection)
+ {
+ SettingCategoryList categories = (*itSection)->GetCategories(level);
+ for (SettingCategoryList::const_iterator itCategory = categories.begin(); itCategory != categories.end(); ++itCategory)
+ {
+ CVariant varCategory(CVariant::VariantTypeObject);
+ if (!SerializeSettingCategory(*itCategory, varCategory))
+ continue;
+
+ if (listSettings)
+ {
+ varCategory["groups"] = CVariant(CVariant::VariantTypeArray);
+
+ SettingGroupList groups = (*itCategory)->GetGroups(level);
+ for (SettingGroupList::const_iterator itGroup = groups.begin(); itGroup != groups.end(); ++itGroup)
+ {
+ CVariant varGroup(CVariant::VariantTypeObject);
+ if (!SerializeSettingGroup(*itGroup, varGroup))
+ continue;
+
+ varGroup["settings"] = CVariant(CVariant::VariantTypeArray);
+ SettingList settings = (*itGroup)->GetSettings(level);
+ for (SettingList::const_iterator itSetting = settings.begin(); itSetting != settings.end(); ++itSetting)
+ {
+ CVariant varSetting(CVariant::VariantTypeObject);
+ if (!SerializeSetting(*itSetting, varSetting))
+ continue;
+
+ varGroup["settings"].push_back(varSetting);
+ }
+
+ varCategory["groups"].push_back(varGroup);
+ }
+ }
+
+ result["categories"].push_back(varCategory);
+ }
+ }
+
+ return OK;
+}
+
+JSONRPC_STATUS CSettingsOperations::GetSettings(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
+{
+ SettingLevel level = (SettingLevel)ParseSettingLevel(parameterObject["level"].asString());
+ const CVariant &filter = parameterObject["filter"];
+ bool doFilter = filter.isObject() && filter.isMember("section") && filter.isMember("category");
+ string strSection, strCategory;
+ if (doFilter)
+ {
+ strSection = filter["section"].asString();
+ strCategory = filter["category"].asString();
+ }
+
+ vector<CSettingSection*> sections;
+
+ if (doFilter)
+ {
+ CSettingSection *section = CSettings::Get().GetSection(strSection);
+ if (section == NULL)
+ return InvalidParams;
+
+ sections.push_back(section);
+ }
+ else
+ sections = CSettings::Get().GetSections();
+
+ result["settings"] = CVariant(CVariant::VariantTypeArray);
+
+ for (vector<CSettingSection*>::const_iterator itSection = sections.begin(); itSection != sections.end(); ++itSection)
+ {
+ SettingCategoryList categories = (*itSection)->GetCategories(level);
+ bool found = !doFilter;
+ for (SettingCategoryList::const_iterator itCategory = categories.begin(); itCategory != categories.end(); ++itCategory)
+ {
+ if (!doFilter || StringUtils::EqualsNoCase((*itCategory)->GetId(), strCategory))
+ {
+ SettingGroupList groups = (*itCategory)->GetGroups(level);
+ for (SettingGroupList::const_iterator itGroup = groups.begin(); itGroup != groups.end(); ++itGroup)
+ {
+ SettingList settings = (*itGroup)->GetSettings(level);
+ for (SettingList::const_iterator itSetting = settings.begin(); itSetting != settings.end(); ++itSetting)
+ {
+ CVariant varSetting(CVariant::VariantTypeObject);
+ if (!SerializeSetting(*itSetting, varSetting))
+ continue;
+
+ result["settings"].push_back(varSetting);
+ }
+ }
+ found = true;
+
+ if (doFilter)
+ break;
+ }
+ }
+
+ if (doFilter && !found)
+ return InvalidParams;
+ }
+
+ return OK;
+}
+
+JSONRPC_STATUS CSettingsOperations::GetSettingValue(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
+{
+ string settingId = parameterObject["setting"].asString();
+
+ CSetting* setting = CSettings::Get().GetSetting(settingId);
+ if (setting == NULL)
+ return InvalidParams;
+
+ CVariant value;
+ switch (setting->GetType())
+ {
+ case SettingTypeBool:
+ value = static_cast<CSettingBool*>(setting)->GetValue();
+ break;
+
+ case SettingTypeInteger:
+ value = static_cast<CSettingInt*>(setting)->GetValue();
+ break;
+
+ case SettingTypeNumber:
+ value = static_cast<CSettingNumber*>(setting)->GetValue();
+ break;
+
+ case SettingTypeString:
+ value = static_cast<CSettingString*>(setting)->GetValue();
+ break;
+
+ case SettingTypeList:
+ {
+ SerializeSettingListValues(CSettings::Get().GetList(settingId), value);
+ break;
+ }
+
+ case SettingTypeNone:
+ case SettingTypeAction:
+ default:
+ return InvalidParams;
+ }
+
+ result["value"] = value;
+
+ return OK;
+}
+
+JSONRPC_STATUS CSettingsOperations::SetSettingValue(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
+{
+ string settingId = parameterObject["setting"].asString();
+ CVariant value = parameterObject["value"];
+
+ CSetting* setting = CSettings::Get().GetSetting(settingId);
+ if (setting == NULL)
+ return InvalidParams;
+
+ switch (setting->GetType())
+ {
+ case SettingTypeBool:
+ if (!value.isBoolean())
+ return InvalidParams;
+
+ result = static_cast<CSettingBool*>(setting)->SetValue(value.asBoolean());
+ break;
+
+ case SettingTypeInteger:
+ if (!value.isInteger() && !value.isUnsignedInteger())
+ return InvalidParams;
+
+ result = static_cast<CSettingInt*>(setting)->SetValue((int)value.asInteger());
+ break;
+
+ case SettingTypeNumber:
+ if (!value.isDouble())
+ return InvalidParams;
+
+ result = static_cast<CSettingNumber*>(setting)->SetValue(value.asDouble());
+ break;
+
+ case SettingTypeString:
+ if (!value.isString())
+ return InvalidParams;
+
+ result = static_cast<CSettingString*>(setting)->SetValue(value.asString());
+ break;
+
+ case SettingTypeList:
+ {
+ if (!value.isArray())
+ return InvalidParams;
+
+ std::vector<CVariant> values;
+ for (CVariant::const_iterator_array itValue = value.begin_array(); itValue != value.end_array(); ++itValue)
+ values.push_back(*itValue);
+
+ result = CSettings::Get().SetList(settingId, values);
+ break;
+ }
+
+ case SettingTypeNone:
+ case SettingTypeAction:
+ default:
+ return InvalidParams;
+ }
+
+ return OK;
+}
+
+JSONRPC_STATUS CSettingsOperations::ResetSettingValue(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
+{
+ string settingId = parameterObject["setting"].asString();
+
+ CSetting* setting = CSettings::Get().GetSetting(settingId);
+ if (setting == NULL)
+ return InvalidParams;
+
+ switch (setting->GetType())
+ {
+ case SettingTypeBool:
+ case SettingTypeInteger:
+ case SettingTypeNumber:
+ case SettingTypeString:
+ case SettingTypeList:
+ setting->Reset();
+ break;
+
+ case SettingTypeNone:
+ case SettingTypeAction:
+ default:
+ return InvalidParams;
+ }
+
+ return ACK;
+}
+
+int CSettingsOperations::ParseSettingLevel(const std::string &strLevel)
+{
+ if (StringUtils::EqualsNoCase(strLevel, "basic"))
+ return SettingLevelBasic;
+ if (StringUtils::EqualsNoCase(strLevel, "advanced"))
+ return SettingLevelAdvanced;
+ if (StringUtils::EqualsNoCase(strLevel, "expert"))
+ return SettingLevelExpert;
+
+ return SettingLevelStandard;
+}
+
+bool CSettingsOperations::SerializeISetting(const ISetting* setting, CVariant &obj)
+{
+ if (setting == NULL)
+ return false;
+
+ obj["id"] = setting->GetId();
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingSection(const CSettingSection* setting, CVariant &obj)
+{
+ if (!SerializeISetting(setting, obj))
+ return false;
+
+ obj["label"] = g_localizeStrings.Get(setting->GetLabel());
+ if (setting->GetHelp() >= 0)
+ obj["help"] = g_localizeStrings.Get(setting->GetHelp());
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingCategory(const CSettingCategory* setting, CVariant &obj)
+{
+ if (!SerializeISetting(setting, obj))
+ return false;
+
+ obj["label"] = g_localizeStrings.Get(setting->GetLabel());
+ if (setting->GetHelp() >= 0)
+ obj["help"] = g_localizeStrings.Get(setting->GetHelp());
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingGroup(const CSettingGroup* setting, CVariant &obj)
+{
+ return SerializeISetting(setting, obj);
+}
+
+bool CSettingsOperations::SerializeSetting(const CSetting* setting, CVariant &obj)
+{
+ if (!SerializeISetting(setting, obj))
+ return false;
+
+ obj["label"] = g_localizeStrings.Get(setting->GetLabel());
+ if (setting->GetHelp() >= 0)
+ obj["help"] = g_localizeStrings.Get(setting->GetHelp());
+
+ switch (setting->GetLevel())
+ {
+ case SettingLevelBasic:
+ obj["level"] = "basic";
+ break;
+
+ case SettingLevelStandard:
+ obj["level"] = "standard";
+ break;
+
+ case SettingLevelAdvanced:
+ obj["level"] = "advanced";
+ break;
+
+ case SettingLevelExpert:
+ obj["level"] = "expert";
+ break;
+
+ default:
+ return false;
+ }
+
+ obj["enabled"] = setting->IsEnabled();
+ obj["parent"] = setting->GetParent();
+
+ obj["control"] = CVariant(CVariant::VariantTypeObject);
+ if (!SerializeSettingControl(setting->GetControl(), obj["control"]))
+ return false;
+
+ switch (setting->GetType())
+ {
+ case SettingTypeBool:
+ obj["type"] = "boolean";
+ if (!SerializeSettingBool(static_cast<const CSettingBool*>(setting), obj))
+ return false;
+ break;
+
+ case SettingTypeInteger:
+ obj["type"] = "integer";
+ if (!SerializeSettingInt(static_cast<const CSettingInt*>(setting), obj))
+ return false;
+ break;
+
+ case SettingTypeNumber:
+ obj["type"] = "number";
+ if (!SerializeSettingNumber(static_cast<const CSettingNumber*>(setting), obj))
+ return false;
+ break;
+
+ case SettingTypeString:
+ obj["type"] = "string";
+ if (!SerializeSettingString(static_cast<const CSettingString*>(setting), obj))
+ return false;
+ break;
+
+ case SettingTypeAction:
+ obj["type"] = "action";
+ if (!SerializeSettingAction(static_cast<const CSettingAction*>(setting), obj))
+ return false;
+ break;
+
+ case SettingTypeList:
+ obj["type"] = "list";
+ if (!SerializeSettingList(static_cast<const CSettingList*>(setting), obj))
+ return false;
+ break;
+
+ default:
+ return false;
+ }
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingBool(const CSettingBool* setting, CVariant &obj)
+{
+ if (setting == NULL)
+ return false;
+
+ obj["value"] = setting->GetValue();
+ obj["default"] = setting->GetDefault();
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingInt(const CSettingInt* setting, CVariant &obj)
+{
+ if (setting == NULL)
+ return false;
+
+ obj["value"] = setting->GetValue();
+ obj["default"] = setting->GetDefault();
+
+ switch (setting->GetOptionsType())
+ {
+ case SettingOptionsTypeStatic:
+ {
+ obj["options"] = CVariant(CVariant::VariantTypeArray);
+ const StaticIntegerSettingOptions& options = setting->GetOptions();
+ for (StaticIntegerSettingOptions::const_iterator itOption = options.begin(); itOption != options.end(); ++itOption)
+ {
+ CVariant varOption(CVariant::VariantTypeObject);
+ varOption["label"] = g_localizeStrings.Get(itOption->first);
+ varOption["value"] = itOption->second;
+ obj["options"].push_back(varOption);
+ }
+ break;
+ }
+
+ case SettingOptionsTypeDynamic:
+ {
+ obj["options"] = CVariant(CVariant::VariantTypeArray);
+ DynamicIntegerSettingOptions options = const_cast<CSettingInt*>(setting)->UpdateDynamicOptions();
+ for (DynamicIntegerSettingOptions::const_iterator itOption = options.begin(); itOption != options.end(); ++itOption)
+ {
+ CVariant varOption(CVariant::VariantTypeObject);
+ varOption["label"] = itOption->first;
+ varOption["value"] = itOption->second;
+ obj["options"].push_back(varOption);
+ }
+ break;
+ }
+
+ case SettingOptionsTypeNone:
+ default:
+ obj["minimum"] = setting->GetMinimum();
+ obj["step"] = setting->GetStep();
+ obj["maximum"] = setting->GetMaximum();
+ break;
+ }
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingNumber(const CSettingNumber* setting, CVariant &obj)
+{
+ if (setting == NULL)
+ return false;
+
+ obj["value"] = setting->GetValue();
+ obj["default"] = setting->GetDefault();
+
+ obj["minimum"] = setting->GetMinimum();
+ obj["step"] = setting->GetStep();
+ obj["maximum"] = setting->GetMaximum();
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingString(const CSettingString* setting, CVariant &obj)
+{
+ if (setting == NULL)
+ return false;
+
+ obj["value"] = setting->GetValue();
+ obj["default"] = setting->GetDefault();
+
+ obj["allowempty"] = setting->AllowEmpty();
+
+ if (setting->GetOptionsType() == SettingOptionsTypeDynamic)
+ {
+ obj["options"] = CVariant(CVariant::VariantTypeArray);
+ DynamicStringSettingOptions options = const_cast<CSettingString*>(setting)->UpdateDynamicOptions();
+ for (DynamicStringSettingOptions::const_iterator itOption = options.begin(); itOption != options.end(); ++itOption)
+ {
+ CVariant varOption(CVariant::VariantTypeObject);
+ varOption["label"] = itOption->first;
+ varOption["value"] = itOption->second;
+ obj["options"].push_back(varOption);
+ }
+ }
+
+ const ISettingControl* control = setting->GetControl();
+ if (control->GetFormat() == "path")
+ {
+ if (!SerializeSettingPath(static_cast<const CSettingPath*>(setting), obj))
+ return false;
+ }
+ if (control->GetFormat() == "addon")
+ {
+ if (!SerializeSettingAddon(static_cast<const CSettingAddon*>(setting), obj))
+ return false;
+ }
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingAction(const CSettingAction* setting, CVariant &obj)
+{
+ if (setting == NULL)
+ return false;
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingList(const CSettingList* setting, CVariant &obj)
+{
+ if (setting == NULL ||
+ !SerializeSetting(setting->GetDefinition(), obj["definition"]))
+ return false;
+
+ SerializeSettingListValues(CSettings::Get().GetList(setting->GetId()), obj["value"]);
+ SerializeSettingListValues(CSettings::ListToValues(setting, setting->GetDefault()), obj["default"]);
+
+ obj["elementtype"] = obj["definition"]["type"];
+ obj["delimiter"] = setting->GetDelimiter();
+ obj["minimum"] = setting->GetMinimum();
+ obj["maximum"] = setting->GetMaximum();
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingPath(const CSettingPath* setting, CVariant &obj)
+{
+ if (setting == NULL)
+ return false;
+
+ obj["type"] = "path";
+ obj["writable"] = setting->Writable();
+ obj["sources"] = setting->GetSources();
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingAddon(const CSettingAddon* setting, CVariant &obj)
+{
+ if (setting == NULL)
+ return false;
+
+ obj["type"] = "addon";
+ obj["addontype"] = ADDON::TranslateType(setting->GetAddonType());
+
+ return true;
+}
+
+bool CSettingsOperations::SerializeSettingControl(const ISettingControl* control, CVariant &obj)
+{
+ if (control == NULL)
+ return false;
+
+ const std::string& type = control->GetType();
+ obj["type"] = type;
+ obj["format"] = control->GetFormat();
+ obj["delayed"] = control->GetDelayed();
+
+ if (type == "spinner")
+ {
+ const CSettingControlSpinner* spinner = static_cast<const CSettingControlSpinner*>(control);
+ if (spinner == NULL)
+ return false;
+
+ if (spinner->GetFormatLabel() >= 0)
+ obj["formatlabel"] = g_localizeStrings.Get(spinner->GetFormatLabel());
+ else if (!spinner->GetFormatString().empty() && spinner->GetFormatString() != "%i")
+ obj["formatlabel"] = spinner->GetFormatString();
+ if (spinner->GetMinimumLabel() >= 0)
+ obj["minimumlabel"] = g_localizeStrings.Get(spinner->GetMinimumLabel());
+ }
+ else if (type == "edit")
+ {
+ const CSettingControlEdit* edit = static_cast<const CSettingControlEdit*>(control);
+ if (edit == NULL)
+ return false;
+
+ obj["hidden"] = edit->IsHidden();
+ obj["verifynewvalue"] = edit->VerifyNewValue();
+ if (edit->GetHeading() >= 0)
+ obj["heading"] = g_localizeStrings.Get(edit->GetHeading());
+ }
+ else if (type == "button")
+ {
+ const CSettingControlButton* button = static_cast<const CSettingControlButton*>(control);
+ if (button == NULL)
+ return false;
+
+ if (button->GetHeading() >= 0)
+ obj["heading"] = g_localizeStrings.Get(button->GetHeading());
+ }
+ else if (type == "list")
+ {
+ const CSettingControlList* list = static_cast<const CSettingControlList*>(control);
+ if (list == NULL)
+ return false;
+
+ if (list->GetHeading() >= 0)
+ obj["heading"] = g_localizeStrings.Get(list->GetHeading());
+ obj["multiselect"] = list->CanMultiSelect();
+ }
+ else if (type != "toggle")
+ return false;
+
+ return true;
+}
+
+void CSettingsOperations::SerializeSettingListValues(const std::vector<CVariant> &values, CVariant &obj)
+{
+ obj = CVariant(CVariant::VariantTypeArray);
+ for (std::vector<CVariant>::const_iterator itValue = values.begin(); itValue != values.end(); ++itValue)
+ obj.push_back(*itValue);
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "utils/StdString.h"
+#include "JSONRPC.h"
+
+class ISetting;
+class CSettingSection;
+class CSettingCategory;
+class CSettingGroup;
+class CSetting;
+class CSettingBool;
+class CSettingInt;
+class CSettingNumber;
+class CSettingString;
+class CSettingAction;
+class CSettingList;
+class CSettingPath;
+class CSettingAddon;
+class ISettingControl;
+
+namespace JSONRPC
+{
+ class CSettingsOperations
+ {
+ public:
+ static JSONRPC_STATUS GetSections(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
+ static JSONRPC_STATUS GetCategories(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
+ static JSONRPC_STATUS GetSettings(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
+
+ static JSONRPC_STATUS GetSettingValue(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
+ static JSONRPC_STATUS SetSettingValue(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
+ static JSONRPC_STATUS ResetSettingValue(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
+
+ private:
+ static int ParseSettingLevel(const std::string &strLevel);
+
+ static bool SerializeISetting(const ISetting* setting, CVariant &obj);
+ static bool SerializeSettingSection(const CSettingSection* setting, CVariant &obj);
+ static bool SerializeSettingCategory(const CSettingCategory* setting, CVariant &obj);
+ static bool SerializeSettingGroup(const CSettingGroup* setting, CVariant &obj);
+ static bool SerializeSetting(const CSetting* setting, CVariant &obj);
+ static bool SerializeSettingBool(const CSettingBool* setting, CVariant &obj);
+ static bool SerializeSettingInt(const CSettingInt* setting, CVariant &obj);
+ static bool SerializeSettingNumber(const CSettingNumber* setting, CVariant &obj);
+ static bool SerializeSettingString(const CSettingString* setting, CVariant &obj);
+ static bool SerializeSettingAction(const CSettingAction* setting, CVariant &obj);
+ static bool SerializeSettingList(const CSettingList* setting, CVariant &obj);
+ static bool SerializeSettingPath(const CSettingPath* setting, CVariant &obj);
+ static bool SerializeSettingAddon(const CSettingAddon* setting, CVariant &obj);
+ static bool SerializeSettingControl(const ISettingControl* control, CVariant &obj);
+
+ static void SerializeSettingListValues(const std::vector<CVariant> &values, CVariant &obj);
+ };
+}
{ "name": "addonid", "type": "string", "required": true },
{ "name": "params", "type": [
{ "type": "object", "additionalProperties": { "type": "string" } },
- { "type": "array", "items": { "type": "string" } }
- ]
+ { "type": "array", "items": { "type": "string" } },
+ { "type": "string", "description": "URL path (must start with / or ?" }
+ ],
+ "default": ""
},
{ "name": "wait", "type": "boolean", "default": false }
],
{ "name": "thumbnail", "$ref": "Optional.String" }
],
"returns": "string"
+ },
+ "Settings.GetSections": {
+ "type": "method",
+ "description": "Retrieves all setting sections",
+ "transport": "Response",
+ "permission": "ReadData",
+ "params": [
+ { "name": "level", "$ref": "Setting.Level", "default": "standard" },
+ { "name": "properties", "extends": "Item.Fields.Base",
+ "items": { "type": "string",
+ "enum": [ "categories" ]
+ }
+ }
+ ],
+ "returns": {
+ "type": "object",
+ "properties": {
+ "sections": { "type": "array",
+ "items": { "$ref": "Setting.Details.Section" }
+ }
+ }
+ }
+ },
+ "Settings.GetCategories": {
+ "type": "method",
+ "description": "Retrieves all setting categories",
+ "transport": "Response",
+ "permission": "ReadData",
+ "params": [
+ { "name": "level", "$ref": "Setting.Level", "default": "standard" },
+ { "name": "section", "type": "string", "default": "" },
+ { "name": "properties", "extends": "Item.Fields.Base",
+ "items": { "type": "string",
+ "enum": [ "settings" ]
+ }
+ }
+ ],
+ "returns": {
+ "type": "object",
+ "properties": {
+ "categories": { "type": "array",
+ "items": { "$ref": "Setting.Details.Category" }
+ }
+ }
+ }
+ },
+ "Settings.GetSettings": {
+ "type": "method",
+ "description": "Retrieves all settings",
+ "transport": "Response",
+ "permission": "ReadData",
+ "params": [
+ { "name": "level", "$ref": "Setting.Level", "default": "standard" },
+ { "name": "filter", "type": [
+ { "type": "object",
+ "properties": {
+ "section": { "type": "string", "required": true, "minLength": 1 },
+ "category": { "type": "string", "required": true, "minLength": 1 }
+ },
+ "additionalProperties": false,
+ "required": true
+ }
+ ],
+ "default": null
+ }
+ ],
+ "returns": {
+ "type": "object",
+ "properties": {
+ "settings": { "type": "array",
+ "items": { "$ref": "Setting.Details.Setting" }
+ }
+ }
+ }
+ },
+ "Settings.GetSettingValue": {
+ "type": "method",
+ "description": "Retrieves the value of a setting",
+ "transport": "Response",
+ "permission": "ReadData",
+ "params": [
+ { "name": "setting", "type": "string", "required": true, "minLength": 1 }
+ ],
+ "returns": {
+ "type": "object",
+ "properties": {
+ "value": { "$ref": "Setting.Value.Extended", "required": true }
+ }
+ }
+ },
+ "Settings.SetSettingValue": {
+ "type": "method",
+ "description": "Changes the value of a setting",
+ "transport": "Response",
+ "permission": "WriteSetting",
+ "params": [
+ { "name": "setting", "type": "string", "required": true, "minLength": 1 },
+ { "name": "value", "$ref": "Setting.Value.Extended", "required": true }
+ ],
+ "returns": "boolean"
+ },
+ "Settings.ResetSettingValue": {
+ "type": "method",
+ "description": "Resets the value of a setting",
+ "transport": "Response",
+ "permission": "WriteSetting",
+ "params": [
+ { "name": "setting", "type": "string", "required": true, "minLength": 1 }
+ ],
+ "returns": "string"
}
}
\ No newline at end of file
"thumbnail": { "type": "string" }
},
"additionalProperties": false
+ },
+ "Setting.Type": {
+ "type": "string",
+ "enum": [
+ "boolean", "integer", "number", "string", "action", "list",
+ "path", "addon"
+ ]
+ },
+ "Setting.Level": {
+ "type": "string",
+ "enum": [ "basic", "standard", "advanced", "expert" ]
+ },
+ "Setting.Value": {
+ "type": [
+ { "type": "boolean", "required": true },
+ { "type": "integer", "required": true },
+ { "type": "number", "required": true },
+ { "type": "string", "required": true }
+ ]
+ },
+ "Setting.Value.List": {
+ "type": "array",
+ "items": { "$ref": "Setting.Value" }
+ },
+ "Setting.Value.Extended": {
+ "type": [
+ { "type": "boolean", "required": true },
+ { "type": "integer", "required": true },
+ { "type": "number", "required": true },
+ { "type": "string", "required": true },
+ { "$ref": "Setting.Value.List", "required": true }
+ ]
+ },
+ "Setting.Details.ControlBase": {
+ "type": "object",
+ "properties": {
+ "type": { "type": "string", "required": true },
+ "format": { "type": "string", "required": true },
+ "delayed": { "type": "boolean", "required": true }
+ }
+ },
+ "Setting.Details.ControlCheckmark": {
+ "extends": "Setting.Details.ControlBase",
+ "properties": {
+ "type": { "type": "string", "required": true, "enum": [ "toggle" ] },
+ "format": { "type": "string", "required": true, "enum": [ "boolean" ] }
+ }
+ },
+ "Setting.Details.ControlSpinner": {
+ "extends": "Setting.Details.ControlBase",
+ "properties": {
+ "type": { "type": "string", "required": true, "enum": [ "spinner" ] },
+ "formatlabel": { "type": "string" },
+ "minimumlabel": { "type": "string" }
+ }
+ },
+ "Setting.Details.ControlHeading": {
+ "extends": "Setting.Details.ControlBase",
+ "properties": {
+ "heading": { "type": "string" }
+ }
+ },
+ "Setting.Details.ControlEdit": {
+ "extends": "Setting.Details.ControlHeading",
+ "properties": {
+ "type": { "type": "string", "required": true, "enum": [ "edit" ] },
+ "hidden": { "type": "boolean", "required": true },
+ "verifynewvalue": { "type": "boolean", "required": true }
+ }
+ },
+ "Setting.Details.ControlButton": {
+ "extends": "Setting.Details.ControlHeading",
+ "properties": {
+ "type": { "type": "string", "required": true, "enum": [ "button" ] }
+ }
+ },
+ "Setting.Details.ControlList": {
+ "extends": "Setting.Details.ControlHeading",
+ "properties": {
+ "type": { "type": "string", "required": true, "enum": [ "list" ] },
+ "multiselect": { "type": "boolean", "required": true }
+ }
+ },
+ "Setting.Details.Control": {
+ "type": [
+ { "$ref": "Setting.Details.ControlCheckmark", "required": true },
+ { "$ref": "Setting.Details.ControlSpinner", "required": true },
+ { "$ref": "Setting.Details.ControlEdit", "required": true },
+ { "$ref": "Setting.Details.ControlButton", "required": true },
+ { "$ref": "Setting.Details.ControlList", "required": true }
+ ]
+ },
+ "Setting.Details.Base": {
+ "type": "object",
+ "properties": {
+ "id": { "type": "string", "required": true, "minLength": 1 },
+ "label": { "type": "string", "required": true },
+ "help": { "type": "string" }
+ }
+ },
+ "Setting.Details.SettingBase": {
+ "extends": "Setting.Details.Base",
+ "properties": {
+ "type": { "$ref": "Setting.Type", "required": true },
+ "enabled": { "type": "boolean", "required": true },
+ "level": { "type": "integer", "required": true },
+ "parent": { "type": "string" },
+ "control": { "$ref": "Setting.Details.Control" }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.SettingBool": {
+ "extends": "Setting.Details.SettingBase",
+ "properties": {
+ "value": { "type": "boolean", "required": true },
+ "default": { "type": "boolean", "required": true }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.SettingInt": {
+ "extends": "Setting.Details.SettingBase",
+ "properties": {
+ "value": { "type": "integer", "required": true },
+ "default": { "type": "integer", "required": true },
+ "minimum": { "type": "integer" },
+ "step": { "type": "integer" },
+ "maximum": { "type": "integer" },
+ "options": { "type": "array",
+ "items": { "type": "object",
+ "properties": {
+ "label": { "type": "string", "required": true },
+ "value": { "type": "integer", "required": true }
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.SettingNumber": {
+ "extends": "Setting.Details.SettingBase",
+ "properties": {
+ "value": { "type": "number", "required": true },
+ "default": { "type": "number", "required": true },
+ "minimum": { "type": "number", "required": true },
+ "step": { "type": "number", "required": true },
+ "maximum": { "type": "number", "required": true }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.SettingString": {
+ "extends": "Setting.Details.SettingBase",
+ "properties": {
+ "value": { "type": "string", "required": true },
+ "default": { "type": "string", "required": true },
+ "allowempty": { "type": "boolean", "required": true },
+ "options": { "type": "array",
+ "items": { "type": "object",
+ "properties": {
+ "label": { "type": "string", "required": true },
+ "value": { "type": "string", "required": true }
+ }
+ }
+ }
+ }
+ },
+ "Setting.Details.SettingAction": {
+ "extends": "Setting.Details.SettingBase",
+ "additionalProperties": false
+ },
+ "Setting.Details.SettingList": {
+ "extends": "Setting.Details.SettingBase",
+ "properties": {
+ "value": { "$ref": "Setting.Value.List", "required": true },
+ "default": { "$ref": "Setting.Value.List", "required": true },
+ "elementtype": { "$ref": "Setting.Type", "required": true },
+ "definition": { "$ref": "Setting.Details.Setting", "required": true },
+ "delimiter": { "type": "string", "required": true },
+ "minimum": { "type": "integer" },
+ "maximum": { "type": "integer" }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.SettingPath": {
+ "extends": "Setting.Details.SettingString",
+ "properties": {
+ "writable": { "type": "boolean", "required": true },
+ "sources": { "type": "array", "items": { "type": "string" } }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.SettingAddon": {
+ "extends": "Setting.Details.SettingString",
+ "properties": {
+ "addontype": { "$ref": "Addon.Types", "required": true }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.Setting": {
+ "type": [
+ { "$ref": "Setting.Details.SettingBool", "required": true },
+ { "$ref": "Setting.Details.SettingInt", "required": true },
+ { "$ref": "Setting.Details.SettingNumber", "required": true },
+ { "$ref": "Setting.Details.SettingString", "required": true },
+ { "$ref": "Setting.Details.SettingAction", "required": true },
+ { "$ref": "Setting.Details.SettingList", "required": true },
+ { "$ref": "Setting.Details.SettingPath", "required": true },
+ { "$ref": "Setting.Details.SettingAddon", "required": true }
+ ]
+ },
+ "Setting.Details.Group": {
+ "type": "object",
+ "properties": {
+ "id": { "type": "string", "required": true, "minLength": 1 },
+ "settings": {
+ "type": "array",
+ "items": { "$ref": "Setting.Details.Setting" },
+ "minItems": 1,
+ "uniqueItems": true
+ }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.Category": {
+ "extends": "Setting.Details.Base",
+ "properties": {
+ "groups": {
+ "type": "array",
+ "items": { "$ref": "Setting.Details.Group" },
+ "minItems": 1,
+ "uniqueItems": true
+ }
+ },
+ "additionalProperties": false
+ },
+ "Setting.Details.Section": {
+ "extends": "Setting.Details.Base",
+ "properties": {
+ "categories": {
+ "type": "array",
+ "items": { "$ref": "Setting.Details.Category" },
+ "minItems": 1,
+ "uniqueItems": true
+ }
+ },
+ "additionalProperties": false
}
}
#include "guilib/GUIWindowManager.h"
#include "guilib/GUIEditControl.h"
#include "guilib/GUIControlFactory.h"
+#include "listproviders/StaticProvider.h"
#include "utils/XBMCTinyXML.h"
#include "utils/StringUtils.h"
{
const ListItemList& vecItems = *pitems;
- std::vector<CGUIListItemPtr> items;
+ std::vector<CGUIStaticItemPtr> items;
for (unsigned int item = 0; item < vecItems.size(); item++)
{
ListItem* pItem = vecItems[item];
- // object is a listitem, and we set m_idpeth to 0 as this
- // is used as the visibility condition for the item in the list
- ListItem *listItem = (ListItem*)pItem;
- listItem->item->m_idepth = 0;
-
- items.push_back((CFileItemPtr &)listItem->item);
+ // NOTE: This code has likely not worked fully correctly for some time
+ // In particular, the click behaviour won't be working.
+ CGUIStaticItemPtr newItem(new CGUIStaticItem(*pItem->item));
+ items.push_back(newItem);
}
// set static list
- ((CGUIBaseContainer *)pGUIControl)->SetStaticContent(items);
+ IListProvider *provider = new CStaticListProvider(items);
+ ((CGUIBaseContainer *)pGUIControl)->SetListProvider(provider);
}
// ============================================================
#include "Util.h"
#include "utils/StringUtils.h"
#include "XBDateTime.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
using namespace std;
*
*/
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "utils/StdString.h"
#include <vector>
#include <map>
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "DirectoryProvider.h"
+#include "filesystem/Directory.h"
+#include "filesystem/FavouritesDirectory.h"
+#include "guilib/GUIWindowManager.h"
+#include "utils/JobManager.h"
+#include "utils/StringUtils.h"
+#include "utils/TimeUtils.h"
+#include "utils/XMLUtils.h"
+#include "threads/SingleLock.h"
+#include "ApplicationMessenger.h"
+#include "FileItem.h"
+
+using namespace std;
+using namespace XFILE;
+
+class CDirectoryJob : public CJob
+{
+public:
+ CDirectoryJob(const std::string &url, int parentID) : m_url(url), m_parentID(parentID) { };
+ virtual ~CDirectoryJob() {};
+
+ virtual const char* GetType() const { return "directory"; };
+ virtual bool operator==(const CJob *job) const
+ {
+ if (strcmp(job->GetType(),GetType()) == 0)
+ {
+ const CDirectoryJob* dirJob = dynamic_cast<const CDirectoryJob*>(job);
+ if (dirJob && dirJob->m_url == m_url)
+ return true;
+ }
+ return false;
+ }
+
+ virtual bool DoWork()
+ {
+ CFileItemList items;
+ if (CDirectory::GetDirectory(m_url, items, ""))
+ {
+ // convert to CGUIStaticItem's and set visibility and targets
+ m_items.reserve(items.Size());
+ for (int i = 0; i < items.Size(); i++)
+ {
+ CGUIStaticItemPtr item(new CGUIStaticItem(*items[i]));
+ if (item->HasProperty("node.visible"))
+ item->SetVisibleCondition(item->GetProperty("node.visible").asString(), m_parentID);
+ m_items.push_back(item);
+ }
+ m_target = items.GetProperty("node.target").asString();
+ }
+ return true;
+ }
+
+ const std::vector<CGUIStaticItemPtr> &GetItems() const { return m_items; }
+ const std::string &GetTarget() const { return m_target; }
+private:
+ std::string m_url;
+ std::string m_target;
+ int m_parentID;
+ std::vector<CGUIStaticItemPtr> m_items;
+};
+
+CDirectoryProvider::CDirectoryProvider(const TiXmlElement *element, int parentID)
+ : IListProvider(parentID),
+ m_updateTime(0),
+ m_invalid(false),
+ m_jobID(0)
+{
+ assert(element);
+
+ if (!element->NoChildren())
+ {
+ const char *target = element->Attribute("target");
+ if (target)
+ m_target.SetLabel(target, "", parentID);
+ m_url.SetLabel(element->FirstChild()->ValueStr(), "", parentID);
+ }
+}
+
+CDirectoryProvider::~CDirectoryProvider()
+{
+ Reset();
+}
+
+bool CDirectoryProvider::Update(bool refresh)
+{
+ bool changed = refresh;
+ {
+ CSingleLock lock(m_section);
+ changed |= m_invalid;
+ m_invalid = false;
+ }
+
+ // update the URL and fire off a new job if needed
+ CStdString value(m_url.GetLabel(m_parentID, false));
+ if (value != m_currentUrl)
+ {
+ m_currentUrl = value;
+
+ // fire job
+ CSingleLock lock(m_section);
+ if (m_jobID)
+ CJobManager::GetInstance().CancelJob(m_jobID);
+ m_jobID = CJobManager::GetInstance().AddJob(new CDirectoryJob(m_currentUrl, m_parentID), this);
+ }
+
+ for (vector<CGUIStaticItemPtr>::iterator i = m_items.begin(); i != m_items.end(); ++i)
+ changed |= (*i)->UpdateVisibility(m_parentID);
+ return changed; // TODO: Also returned changed if properties are changed (if so, need to update scroll to letter).
+}
+
+void CDirectoryProvider::Fetch(vector<CGUIListItemPtr> &items) const
+{
+ CSingleLock lock(m_section);
+ items.clear();
+ for (vector<CGUIStaticItemPtr>::const_iterator i = m_items.begin(); i != m_items.end(); ++i)
+ {
+ if ((*i)->IsVisible())
+ items.push_back(*i);
+ }
+}
+
+void CDirectoryProvider::Reset()
+{
+ // cancel any pending jobs
+ CSingleLock lock(m_section);
+ if (m_jobID)
+ CJobManager::GetInstance().CancelJob(m_jobID);
+ m_jobID = 0;
+ m_items.clear();
+ m_currentTarget.clear();
+ m_currentUrl.clear();
+ m_invalid = false;
+}
+
+void CDirectoryProvider::OnJobComplete(unsigned int jobID, bool success, CJob *job)
+{
+ CSingleLock lock(m_section);
+ if (success)
+ {
+ m_items = ((CDirectoryJob*)job)->GetItems();
+ m_currentTarget = ((CDirectoryJob*)job)->GetTarget();
+ m_invalid = true;
+ }
+ m_jobID = 0;
+}
+
+bool CDirectoryProvider::OnClick(const CGUIListItemPtr &item)
+{
+ CFileItem fileItem(*boost::static_pointer_cast<CFileItem>(item));
+ string target = fileItem.GetProperty("node.target").asString();
+ if (target.empty())
+ target = m_currentTarget;
+ if (target.empty())
+ target = m_target.GetLabel(m_parentID, false);
+ if (fileItem.HasProperty("node.target_url"))
+ fileItem.SetPath(fileItem.GetProperty("node.target_url").asString());
+ // grab the execute string
+ string execute = CFavouritesDirectory::GetExecutePath(fileItem, target);
+ if (!execute.empty())
+ {
+ CGUIMessage message(GUI_MSG_EXECUTE, 0, 0);
+ message.SetStringParam(execute);
+ g_windowManager.SendMessage(message);
+ return true;
+ }
+ return false;
+}
+
+bool CDirectoryProvider::IsUpdating() const
+{
+ CSingleLock lock(m_section);
+ return m_jobID || m_invalid;
+}
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include <string>
+#include "IListProvider.h"
+#include "guilib/GUIStaticItem.h"
+#include "utils/Job.h"
+#include "threads/CriticalSection.h"
+
+class TiXmlElement;
+
+class CDirectoryProvider : public IListProvider, public IJobCallback
+{
+public:
+ CDirectoryProvider(const TiXmlElement *element, int parentID);
+ virtual ~CDirectoryProvider();
+
+ virtual bool Update(bool refresh);
+ virtual void Fetch(std::vector<CGUIListItemPtr> &items) const;
+ virtual void Reset();
+ virtual bool OnClick(const CGUIListItemPtr &item);
+ virtual bool IsUpdating() const;
+
+ // callback from directory job
+ virtual void OnJobComplete(unsigned int jobID, bool success, CJob *job);
+private:
+ unsigned int m_updateTime;
+ bool m_invalid;
+ unsigned int m_jobID;
+ CGUIInfoLabel m_url;
+ CGUIInfoLabel m_target;
+ std::string m_currentUrl;
+ std::string m_currentTarget; ///< \brief node.target property on the list as a whole
+ std::vector<CGUIStaticItemPtr> m_items;
+ CCriticalSection m_section;
+};
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "IListProvider.h"
+#include "utils/XBMCTinyXML.h"
+#include "StaticProvider.h"
+#include "DirectoryProvider.h"
+
+IListProvider *IListProvider::Create(const TiXmlNode *node, int parentID)
+{
+ const TiXmlElement *root = node->FirstChildElement("content");
+ if (root)
+ {
+ const TiXmlElement *item = root->FirstChildElement("item");
+ if (item)
+ return new CStaticListProvider(root, parentID);
+
+ if (!root->NoChildren())
+ return new CDirectoryProvider(root, parentID);
+ }
+ return NULL;
+}
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include <vector>
+#include "boost/shared_ptr.hpp"
+
+class TiXmlNode;
+class CGUIListItem;
+typedef boost::shared_ptr<CGUIListItem> CGUIListItemPtr;
+
+/*!
+ \ingroup listproviders
+ \brief An interface for providing lists to UI containers.
+ */
+class IListProvider
+{
+public:
+ IListProvider(int parentID) : m_parentID(parentID) {}
+ virtual ~IListProvider() {}
+
+ /*! \brief Factory to create list providers.
+ \param node a TiXmlNode to create.
+ \param parentID id of parent window for context.
+ \return the list provider, NULL if none.
+ */
+ static IListProvider *Create(const TiXmlNode *node, int parentID);
+
+ /*! \brief Update the list content
+ \return true if the content has changed, false otherwise.
+ */
+ virtual bool Update(bool refresh)=0;
+
+ /*! \brief Fetch the current list of items.
+ \param items [out] the list to be filled.
+ */
+ virtual void Fetch(std::vector<CGUIListItemPtr> &items) const=0;
+
+ /*! \brief Check whether the list provider is updating content.
+ \return true if in the processing of updating, false otherwise.
+ */
+ virtual bool IsUpdating() const { return false; }
+
+ /*! \brief Reset the current list of items.
+ Derived classes may choose to ignore this.
+ */
+ virtual void Reset() {};
+
+ /*! \brief Click event on an item.
+ \param item the item that was clicked.
+ \return true if the click was handled, false otherwise.
+ */
+ virtual bool OnClick(const CGUIListItemPtr &item)=0;
+
+ /*! \brief Set the default item to focus. For backwards compatibility.
+ \param item the item to focus.
+ \param always whether this item should always be used on first focus.
+ \sa GetDefaultItem, AlwaysFocusDefaultItem
+ */
+ virtual void SetDefaultItem(int item, bool always) {};
+
+ /*! \brief The default item to focus.
+ \return the item to focus by default. -1 for none.
+ \sa SetDefaultItem, AlwaysFocusDefaultItem
+ */
+ virtual int GetDefaultItem() const { return -1; }
+
+ /*! \brief Whether to always focus the default item.
+ \return true if the default item should always be the one to receive focus.
+ \sa GetDefaultItem, SetDefaultItem
+ */
+ virtual bool AlwaysFocusDefaultItem() const { return false; }
+protected:
+ int m_parentID;
+};
--- /dev/null
+SRCS = DirectoryProvider.cpp
+SRCS += IListProvider.cpp
+SRCS += StaticProvider.cpp
+
+LIB=listproviders.a
+
+include ../../Makefile.include
+-include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "StaticProvider.h"
+#include "utils/XMLUtils.h"
+#include "utils/TimeUtils.h"
+
+using namespace std;
+
+CStaticListProvider::CStaticListProvider(const TiXmlElement *element, int parentID)
+: IListProvider(parentID),
+ m_defaultItem(-1),
+ m_defaultAlways(false),
+ m_updateTime(0)
+{
+ assert(element);
+
+ const TiXmlElement *item = element->FirstChildElement("item");
+ while (item)
+ {
+ if (item->FirstChild())
+ {
+ CGUIStaticItemPtr newItem(new CGUIStaticItem(item, parentID));
+ m_items.push_back(newItem);
+ }
+ item = item->NextSiblingElement("item");
+ }
+
+ if (XMLUtils::GetInt(element, "default", m_defaultItem))
+ {
+ const char *always = element->FirstChildElement("default")->Attribute("always");
+ if (always && strnicmp(always, "true", 4) == 0)
+ m_defaultAlways = true;
+ }
+}
+
+CStaticListProvider::CStaticListProvider(const std::vector<CGUIStaticItemPtr> &items)
+: IListProvider(0),
+ m_defaultItem(-1),
+ m_defaultAlways(false),
+ m_updateTime(0),
+ m_items(items)
+{
+}
+
+CStaticListProvider::~CStaticListProvider()
+{
+}
+
+bool CStaticListProvider::Update(bool refresh)
+{
+ bool changed = refresh;
+ if (!m_updateTime)
+ m_updateTime = CTimeUtils::GetFrameTime();
+ else if (CTimeUtils::GetFrameTime() - m_updateTime > 1000)
+ {
+ m_updateTime = CTimeUtils::GetFrameTime();
+ for (vector<CGUIStaticItemPtr>::iterator i = m_items.begin(); i != m_items.end(); ++i)
+ (*i)->UpdateProperties(m_parentID);
+ }
+ for (vector<CGUIStaticItemPtr>::iterator i = m_items.begin(); i != m_items.end(); ++i)
+ changed |= (*i)->UpdateVisibility(m_parentID);
+ return changed; // TODO: Also returned changed if properties are changed (if so, need to update scroll to letter).
+}
+
+void CStaticListProvider::Fetch(vector<CGUIListItemPtr> &items) const
+{
+ items.clear();
+ for (vector<CGUIStaticItemPtr>::const_iterator i = m_items.begin(); i != m_items.end(); ++i)
+ {
+ if ((*i)->IsVisible())
+ items.push_back(*i);
+ }
+}
+
+void CStaticListProvider::SetDefaultItem(int item, bool always)
+{
+ m_defaultItem = item;
+ m_defaultAlways = always;
+}
+
+int CStaticListProvider::GetDefaultItem() const
+{
+ if (m_defaultItem >= 0)
+ {
+ for (vector<CGUIStaticItemPtr>::const_iterator i = m_items.begin(); i != m_items.end(); ++i)
+ {
+ if ((*i)->m_iprogramCount == m_defaultItem && (*i)->IsVisible())
+ return i - m_items.begin();
+ }
+ }
+ return -1;
+}
+
+bool CStaticListProvider::AlwaysFocusDefaultItem() const
+{
+ return m_defaultAlways;
+}
+
+bool CStaticListProvider::OnClick(const CGUIListItemPtr &item)
+{
+ CGUIStaticItemPtr staticItem = boost::static_pointer_cast<CGUIStaticItem>(item);
+ return staticItem->GetClickActions().ExecuteActions(0, m_parentID);
+}
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include "IListProvider.h"
+#include "guilib/GUIStaticItem.h"
+
+class CStaticListProvider : public IListProvider
+{
+public:
+ CStaticListProvider(const TiXmlElement *element, int parentID);
+ CStaticListProvider(const std::vector<CGUIStaticItemPtr> &items); // for python
+ virtual ~CStaticListProvider();
+
+ virtual bool Update(bool refresh);
+ virtual void Fetch(std::vector<CGUIListItemPtr> &items) const;
+ virtual bool OnClick(const CGUIListItemPtr &item);
+ virtual void SetDefaultItem(int item, bool always);
+ virtual int GetDefaultItem() const;
+ virtual bool AlwaysFocusDefaultItem() const;
+private:
+ int m_defaultItem;
+ bool m_defaultAlways;
+ unsigned int m_updateTime;
+ std::vector<CGUIStaticItemPtr> m_items;
+};
#include "system.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "utils/StdString.h"
enum EncMode { ENC_NONE = 0, ENC_WEP = 1, ENC_WPA = 2, ENC_WPA2 = 3 };
#endif
#include "settings/AdvancedSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "utils/log.h"
#include "utils/RssManager.h"
*/
#include "system.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#ifdef HAS_WEB_SERVER
class CWebServer;
#include "URL.h"
#include "XBDateTime.h"
#include "utils/Job.h"
-#include "settings/ISettingsHandler.h"
+#include "settings/lib/ISettingsHandler.h"
class CWakeOnAccess : private IJobCallback, public ISettingsHandler
{
#pragma once
#include <string>
-#include "settings/ISettingsHandler.h"
+#include "settings/lib/ISettingsHandler.h"
#include "threads/CriticalSection.h"
class CUPnPSettings : public ISettingsHandler
const char *GetDarwinVersionString(void)
{
+ CCocoaAutoPool pool;
return [[[NSProcessInfo processInfo] operatingSystemVersionString] UTF8String];
}
#include "dialogs/GUIDialogYesNo.h"
#include "utils/log.h"
#include "system.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "utils/SystemInfo.h"
#if !defined(__arm__)
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
enum AppleRemoteOptions
{
#include "utils/StringUtils.h"
#include "Util.h"
#include "guilib/Key.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
using namespace PERIPHERALS;
using namespace XFILE;
#include "system.h"
#include "bus/PeripheralBus.h"
#include "devices/Peripheral.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "threads/CriticalSection.h"
#include "threads/Thread.h"
#include "utils/Observer.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
-static GUID USB_RAW_GUID = { 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } };
-static GUID USB_HID_GUID = { 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } };
-static GUID USB_DISK_GUID = { 0x53F56307, 0xB6BF, 0x11D0, { 0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B } };
-static GUID USB_NIC_GUID = { 0xAD498944, 0x762F, 0x11D0, { 0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C } };
+const static GUID USB_RAW_GUID = { 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } };
+const static GUID USB_HID_GUID = { 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } };
+const static GUID USB_DISK_GUID = { 0x53F56307, 0xB6BF, 0x11D0, { 0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B } };
+const static GUID USB_NIC_GUID = { 0xAD498944, 0x762F, 0x11D0, { 0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C } };
using namespace PERIPHERALS;
+// Only to avoid endless loops while scanning for devices
+#define MAX_BUS_DEVICES 2000
+
CPeripheralBusUSB::CPeripheralBusUSB(CPeripherals *manager) :
CPeripheralBus("PeripBusUSB", manager, PERIPHERAL_BUS_USB)
{
return PerformDeviceScan(&USB_RAW_GUID, PERIPHERAL_UNKNOWN, results);
}
-bool CPeripheralBusUSB::PerformDeviceScan(const GUID *guid, const PeripheralType type, PeripheralScanResults &results)
+bool CPeripheralBusUSB::PerformDeviceScan(const GUID *guid, const PeripheralType defaultType, PeripheralScanResults &results)
{
bool bReturn(false);
- HDEVINFO hDevHandle;
DWORD required = 0, iMemberIndex = 0;
- int nBufferSize = 0;
+ int nBufferSize = 200; // Just initial guess, will be increased if required
SP_DEVICE_INTERFACE_DATA deviceInterfaceData;
deviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
SP_DEVINFO_DATA devInfoData;
devInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
- if ((hDevHandle = SetupDiGetClassDevs(guid, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)) == INVALID_HANDLE_VALUE)
+ HDEVINFO const hDevHandle = SetupDiGetClassDevs(guid, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
+ if (hDevHandle == INVALID_HANDLE_VALUE)
{
CLog::Log(LOGWARNING, "%s - cannot query USB devices: invalid handle", __FUNCTION__);
return bReturn;
}
- bReturn = true;
- BOOL bResult = true;
- PSP_DEVICE_INTERFACE_DETAIL_DATA devicedetailData = NULL;
- while(bResult)
+ PSP_DEVICE_INTERFACE_DETAIL_DATA devicedetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(nBufferSize);
+ int nPropertyBufferSize = 100; // Just initial guess, will be increased if required
+ char* deviceProperty = (char*)malloc(nPropertyBufferSize);
+ if (!devicedetailData || !deviceProperty)
{
- bResult = SetupDiEnumDeviceInfo(hDevHandle, iMemberIndex, &devInfoData);
+ free(devicedetailData);
+ free(deviceProperty);
+ CLog::Log(LOGSEVERE, "%s: memory allocation failed", __FUNCTION__);
+ return false;
+ }
- if (bResult)
- bResult = SetupDiEnumDeviceInterfaces(hDevHandle, 0, guid, iMemberIndex, &deviceInterfaceData);
+ SP_DEVINFO_DATA deviceInfo;
+ bReturn = true;
+ for (iMemberIndex = 0; bReturn && iMemberIndex < MAX_BUS_DEVICES; iMemberIndex++)
+ {
+ bReturn = SetupDiEnumDeviceInfo(hDevHandle, iMemberIndex, &devInfoData) == TRUE;
- if (bResult)
+ if (bReturn)
+ bReturn = SetupDiEnumDeviceInterfaces(hDevHandle, 0, guid, iMemberIndex, &deviceInterfaceData) == TRUE;
+ else
{
- iMemberIndex++;
- BOOL bDetailResult = false;
- {
- // As per MSDN, Get the required buffer size. Call SetupDiGetDeviceInterfaceDetail with a
- // NULL DeviceInterfaceDetailData pointer, a DeviceInterfaceDetailDataSize of zero,
- // and a valid RequiredSize variable. In response to such a call, this function returns
- // the required buffer size at RequiredSize and fails with GetLastError returning
- // ERROR_INSUFFICIENT_BUFFER.
- // Allocate an appropriately sized buffer and call the function again to get the interface details.
+ bReturn = true;
+ if (GetLastError() == ERROR_NO_MORE_ITEMS)
+ break; // no more USB devices, nothing more to scan
+ else
+ continue; // try to get other USB devices
+ }
- SetupDiGetDeviceInterfaceDetail(hDevHandle, &deviceInterfaceData, NULL, 0, &required, NULL);
+ if (bReturn)
+ {
+ devicedetailData->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
+ deviceInfo.cbSize = sizeof(SP_DEVINFO_DATA);
+ BOOL bDetailResult = SetupDiGetDeviceInterfaceDetail(hDevHandle, &deviceInterfaceData, devicedetailData, nBufferSize , &required, &deviceInfo);
+ if (!bDetailResult && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
+ {
+ free(devicedetailData);
devicedetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(required * sizeof(TCHAR));
+ if (!devicedetailData)
+ {
+ free(deviceProperty);
+ CLog::Log(LOGSEVERE, "%s: memory allocation failed", __FUNCTION__);
+ return false;
+ }
devicedetailData->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
nBufferSize = required;
+ bDetailResult = SetupDiGetDeviceInterfaceDetail(hDevHandle, &deviceInterfaceData, devicedetailData, nBufferSize , &required, &deviceInfo);
}
- bDetailResult = SetupDiGetDeviceInterfaceDetail(hDevHandle, &deviceInterfaceData, devicedetailData, nBufferSize , &required, NULL);
if (bDetailResult)
{
- CStdString strVendorId(StringUtils::EmptyString);
- CStdString strProductId(StringUtils::EmptyString);
- CStdString strTmp(devicedetailData->DevicePath);
- strVendorId = strTmp.substr(strTmp.Find("vid_") + 4, 4);
- strProductId = strTmp.substr(strTmp.Find("pid_") + 4, 4);
+ bDetailResult = SetupDiGetDeviceRegistryProperty(hDevHandle, &deviceInfo, SPDRP_HARDWAREID, NULL, (PBYTE)deviceProperty, nPropertyBufferSize, &required);
+ if (!bDetailResult && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
+ {
+ free(deviceProperty);
+ deviceProperty = (char*)malloc(required);
+ if (!deviceProperty)
+ {
+ free(devicedetailData);
+ CLog::Log(LOGSEVERE, "%s: memory allocation failed", __FUNCTION__);
+ return false;
+ }
+ nPropertyBufferSize = required;
+ bDetailResult = SetupDiGetDeviceRegistryProperty(hDevHandle, &deviceInfo, SPDRP_HARDWAREID, NULL, (PBYTE)deviceProperty, nPropertyBufferSize, &required);
+ }
+ }
- if ((strTmp.Find("&mi_") < 0) || (strTmp.Find("&mi_00") >= 0))
+ if (bDetailResult)
+ {
+ std::string strTmp(deviceProperty);
+
+ StringUtils::ToLower(strTmp);
+ size_t posVid, posPid;
+ if (((posVid=strTmp.find("\\vid_")) != std::string::npos || (posVid=strTmp.find("&vid_")) != std::string::npos) &&
+ ((posPid=strTmp.find("\\pid_")) != std::string::npos || (posPid=strTmp.find("&pid_")) != std::string::npos))
{
+ std::string strVendorId(strTmp, posVid + 5, 4);
+ std::string strProductId(strTmp, posPid + 5, 4);
PeripheralScanResult prevDevice(m_type);
if (!results.GetDeviceOnLocation(devicedetailData->DevicePath, &prevDevice))
{
PeripheralScanResult result(m_type);
result.m_strLocation = devicedetailData->DevicePath;
- result.m_type = type;
result.m_iVendorId = PeripheralTypeTranslator::HexStringToInt(strVendorId.c_str());
result.m_iProductId = PeripheralTypeTranslator::HexStringToInt(strProductId.c_str());
result.m_iSequence = GetNumberOfPeripheralsWithId(result.m_iVendorId, result.m_iProductId);
+ // Assume that buffer is more then enough (we need only 8 chars, initial allocation is 100 chars). If not - just skip type detection.
+ if (SetupDiGetDeviceRegistryProperty(hDevHandle, &devInfoData, SPDRP_CLASS, NULL, (PBYTE)deviceProperty, nPropertyBufferSize, &required) &&
+ strcmp("HIDClass", deviceProperty) == 0)
+ result.m_type = PERIPHERAL_HID;
+ else
+ result.m_type = defaultType;
+
if (!results.ContainsResult(result))
results.m_results.push_back(result);
}
}
}
-
- if (devicedetailData)
- {
- free(devicedetailData);
- devicedetailData = NULL;
- }
- }
- else
- {
- SetupDiDestroyDeviceInfoList(hDevHandle);
- return bReturn;
}
}
+ SetupDiDestroyDeviceInfoList(hDevHandle);
+ if (devicedetailData)
+ free(devicedetailData);
+ if (deviceProperty)
+ free(deviceProperty);
+
return bReturn;
}
bool PerformDeviceScan(PeripheralScanResults &results);
private:
- bool PerformDeviceScan(const GUID *guid, const PeripheralType type, PeripheralScanResults &results);
+ bool PerformDeviceScan(const GUID *guid, const PeripheralType defaultType, PeripheralScanResults &results);
bool GetProductAndVendorId(const PeripheralType type, const CStdString &strDeviceLocation, int *iVendorId, int *iProductId);
};
}
#include "peripherals/Peripherals.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "utils/XBMCTinyXML.h"
#include "utils/URIUtils.h"
#include "guilib/LocalizeStrings.h"
#include "GUIDialogPeripheralSettings.h"
#include "addons/Skin.h"
#include "peripherals/Peripherals.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "utils/log.h"
#include "video/dialogs/GUIDialogVideoSettings.h"
#include "Application.h"
#include "cores/AudioEngine/AEFactory.h"
#include "input/KeyboardStat.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "windowing/WindowingFactory.h"
#include "utils/log.h"
#include <vector>
#include "profiles/Profile.h"
-#include "settings/ISettingsHandler.h"
+#include "settings/lib/ISettingsHandler.h"
#include "threads/CriticalSection.h"
class TiXmlNode;
case PVR_ACTUAL_STREAM_CRYPTION:
CharInfoEncryption(strValue);
break;
+ case PVR_ACTUAL_STREAM_SERVICE:
+ CharInfoService(strValue);
+ break;
+ case PVR_ACTUAL_STREAM_MUX:
+ CharInfoMux(strValue);
+ break;
+ case PVR_ACTUAL_STREAM_PROVIDER:
+ CharInfoProvider(strValue);
+ break;
case PVR_BACKEND_NAME:
CharInfoBackendName(strValue);
break;
strValue = StringUtils::EmptyString;
}
+void CPVRGUIInfo::CharInfoService(CStdString &strValue) const
+{
+ if (!strcmp(m_qualityInfo.strServiceName, StringUtils::EmptyString))
+ strValue.Format("%s", g_localizeStrings.Get(13205));
+ else
+ strValue.Format("%s", m_qualityInfo.strServiceName);
+}
+
+void CPVRGUIInfo::CharInfoMux(CStdString &strValue) const
+{
+ if (!strcmp(m_qualityInfo.strMuxName, StringUtils::EmptyString))
+ strValue.Format("%s", g_localizeStrings.Get(13205));
+ else
+ strValue.Format("%s", m_qualityInfo.strMuxName);
+}
+
+void CPVRGUIInfo::CharInfoProvider(CStdString &strValue) const
+{
+ if (!strcmp(m_qualityInfo.strProviderName, StringUtils::EmptyString))
+ strValue.Format("%s", g_localizeStrings.Get(13205));
+ else
+ strValue.Format("%s", m_qualityInfo.strProviderName);
+}
+
void CPVRGUIInfo::UpdateBackendCache(void)
{
CStdString strBackendName;
if (m_playingEpgTag)
{
/* Calculate here the position we have of the running live TV event.
- * "position in ms" = ("current local time" - "event start local time") * 1000
+ * "position in ms" = ("current UTC" - "event start UTC") * 1000
*/
- CDateTime current = CDateTime::GetCurrentDateTime();
- CDateTime start = m_playingEpgTag->StartAsLocalTime();
+ CDateTime current = g_PVRClients->GetPlayingTime();
+ CDateTime start = m_playingEpgTag->StartAsUTC();
CDateTimeSpan time = current > start ? current - start : CDateTimeSpan(0, 0, 0, 0);
return (time.GetDays() * 60 * 60 * 24
+ time.GetHours() * 60 * 60
void CharInfoBackendRecordings(CStdString &strValue) const;
void CharInfoPlayingClientName(CStdString &strValue) const;
void CharInfoEncryption(CStdString &strValue) const;
+ void CharInfoService(CStdString &strValue) const;
+ void CharInfoMux(CStdString &strValue) const;
+ void CharInfoProvider(CStdString &strValue) const;
/** @name GUIInfoManager data */
//@{
#include "music/tags/MusicInfoTag.h"
#include "settings/AdvancedSettings.h"
#include "settings/MediaSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "threads/SingleLock.h"
#include "windows/GUIWindowPVR.h"
#include <map>
#include "addons/include/xbmc_pvr_types.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "threads/Event.h"
#include "threads/Thread.h"
#include "utils/JobManager.h"
CSingleLock lock(m_critSection);
m_qualityInfo = qualityInfo;
}
+
+time_t CPVRClient::GetPlayingTime(void) const
+{
+ time_t time = 0;
+ if (IsPlaying())
+ {
+ try
+ {
+ time = m_pStruct->GetPlayingTime();
+ }
+ catch (exception &e) { LogException(e, __FUNCTION__); }
+ }
+ // fallback if not implemented by addon
+ if (time == 0)
+ {
+ CDateTime::GetUTCDateTime().GetAsTime(time);
+ }
+ return time;
+}
+
+time_t CPVRClient::GetBufferTimeStart(void) const
+{
+ time_t time = 0;
+ if (IsPlaying())
+ {
+ try
+ {
+ time = m_pStruct->GetBufferTimeStart();
+ }
+ catch (exception &e) { LogException(e, __FUNCTION__); }
+ }
+ return time;
+}
+
+time_t CPVRClient::GetBufferTimeEnd(void) const
+{
+ time_t time = 0;
+ if (IsPlaying())
+ {
+ try
+ {
+ time = m_pStruct->GetBufferTimeEnd();
+ }
+ catch (exception &e) { LogException(e, __FUNCTION__); }
+ }
+ return time;
+}
static const char *ToString(const PVR_ERROR error);
+ /*!
+ * @brief actual playing time
+ */
+ time_t GetPlayingTime() const;
+
+ /*!
+ * @brief time of oldest packet in timeshift buffer
+ */
+ time_t GetBufferTimeStart() const;
+
+ /*!
+ * @brief time of latest packet in timeshift buffer
+ */
+ time_t GetBufferTimeEnd() const;
+
private:
/*!
* @brief Checks whether the provided API version is compatible with XBMC
return client->IsPlayingEncryptedChannel();
return false;
}
+
+time_t CPVRClients::GetPlayingTime() const
+{
+ PVR_CLIENT client;
+ time_t time = 0;
+
+ if (GetPlayingClient(client))
+ {
+ time = client->GetPlayingTime();
+ }
+
+ return time;
+}
+
+time_t CPVRClients::GetBufferTimeStart() const
+{
+ PVR_CLIENT client;
+ time_t time = 0;
+
+ if (GetPlayingClient(client))
+ {
+ time = client->GetBufferTimeStart();
+ }
+
+ return time;
+}
+
+time_t CPVRClients::GetBufferTimeEnd() const
+{
+ PVR_CLIENT client;
+ time_t time = 0;
+
+ if (GetPlayingClient(client))
+ {
+ time = client->GetBufferTimeEnd();
+ }
+
+ return time;
+}
bool GetPlayingClient(PVR_CLIENT &client) const;
+ time_t GetPlayingTime() const;
+ time_t GetBufferTimeStart() const;
+ time_t GetBufferTimeEnd() const;
+
private:
/*!
* @brief Update add-ons from the AddonManager
*/
#include "settings/AdvancedSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "guilib/GUIWindowManager.h"
#include "dialogs/GUIDialogYesNo.h"
#include "FileItem.h"
#include "PVRChannel.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "utils/JobManager.h"
#include <boost/shared_ptr.hpp>
m_iClientIndex == right.m_iClientIndex &&
m_strSummary == right.m_strSummary &&
m_iClientChannelUid == right.m_iClientChannelUid &&
+ m_bIsRadio == right.m_bIsRadio &&
m_bIsRepeating == right.m_bIsRepeating &&
m_StartTime == right.m_StartTime &&
m_StopTime == right.m_StopTime &&
m_iClientIndex = orig.m_iClientIndex;
m_strSummary = orig.m_strSummary;
m_iClientChannelUid = orig.m_iClientChannelUid;
+ m_bIsRadio = orig.m_bIsRadio;
m_bIsRepeating = orig.m_bIsRepeating;
m_StartTime = orig.m_StartTime;
m_StopTime = orig.m_StopTime;
m_parent->m_windowSearch->m_searchfilter.m_strSearchTerm = "\"" + tag.Title() + "\"";
else if (item->IsPVRRecording())
m_parent->m_windowSearch->m_searchfilter.m_strSearchTerm = "\"" + item->GetPVRRecordingInfoTag()->m_strTitle + "\"";
+ else if (item->IsPVRTimer())
+ m_parent->m_windowSearch->m_searchfilter.m_strSearchTerm = "\"" + item->GetPVRTimerInfoTag()->m_strTitle + "\"";
m_parent->m_windowSearch->m_bSearchConfirmed = true;
m_parent->SetLabel(m_iControlButton, 0);
bReturn = true;
if (iAction == ACTION_SELECT_ITEM || iAction == ACTION_MOUSE_LEFT_CLICK)
{
- if (g_advancedSettings.m_bPVRShowEpgInfoOnEpgItemSelect)
- ShowEPGInfo(pItem.get());
- else
+ if (!g_advancedSettings.m_bPVRShowEpgInfoOnEpgItemSelect && pItem->GetEPGInfoTag()->StartAsLocalTime() <= CDateTime::GetCurrentDateTime())
PlayEpgItem(pItem.get());
+ else
+ ShowEPGInfo(pItem.get());
}
else if (iAction == ACTION_SHOW_INFO)
ShowEPGInfo(pItem.get());
CLog::Log(LOGDEBUG, "play channel '%s'", channel->ChannelName().c_str());
CFileItem channelItem = CFileItem(*channel);
+ g_application.SwitchToFullScreen();
bool bReturn = PlayFile(&channelItem);
if (!bReturn)
{
}
else
{
- buttons.Add(CONTEXT_BUTTON_EDIT, 19057); /* edit timer */
- buttons.Add(CONTEXT_BUTTON_ADD, 19056); /* new timer */
+ buttons.Add(CONTEXT_BUTTON_FIND, 19003); /* Find similar program */
buttons.Add(CONTEXT_BUTTON_ACTIVATE, 19058); /* activate/deactivate */
- buttons.Add(CONTEXT_BUTTON_RENAME, 118); /* rename timer */
buttons.Add(CONTEXT_BUTTON_DELETE, 117); /* delete timer */
+ buttons.Add(CONTEXT_BUTTON_EDIT, 19057); /* edit timer */
+ buttons.Add(CONTEXT_BUTTON_RENAME, 118); /* rename timer */
+ buttons.Add(CONTEXT_BUTTON_ADD, 19056); /* new timer */
buttons.Add(CONTEXT_BUTTON_SORTBY_NAME, 103); /* sort by name */
buttons.Add(CONTEXT_BUTTON_SORTBY_DATE, 104); /* sort by date */
if (g_PVRClients->HasMenuHooks(pItem->GetPVRTimerInfoTag()->m_iClientId, PVR_MENUHOOK_TIMER))
#include "utils/LangCodeExpander.h"
#include "LangInfo.h"
#include "profiles/ProfilesManager.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "utils/StringUtils.h"
#include "utils/SystemInfo.h"
m_iPVRTimeCorrection = 0;
m_iPVRInfoToggleInterval = 3000;
- m_bPVRShowEpgInfoOnEpgItemSelect = true;
+ m_bPVRShowEpgInfoOnEpgItemSelect = false;
m_iPVRMinVideoCacheLevel = 5;
m_iPVRMinAudioCacheLevel = 10;
m_bPVRCacheInDvdPlayer = true;
#include <vector>
-#include "settings/ISettingCallback.h"
-#include "settings/ISettingsHandler.h"
+#include "settings/lib/ISettingCallback.h"
+#include "settings/lib/ISettingsHandler.h"
#include "utils/StdString.h"
#include "utils/GlobalsHandling.h"
/* PVR/TV related advanced settings */
int m_iPVRTimeCorrection; /*!< @brief correct all times (epg tags, timer tags, recording tags) by this amount of minutes. defaults to 0. */
int m_iPVRInfoToggleInterval; /*!< @brief if there are more than 1 pvr gui info item available (e.g. multiple recordings active at the same time), use this toggle delay in milliseconds. defaults to 3000. */
- bool m_bPVRShowEpgInfoOnEpgItemSelect; /*!< @brief when selecting an EPG fileitem, show the EPG info dialog if this setting is true. start playback on the selected channel if false */
+ bool m_bPVRShowEpgInfoOnEpgItemSelect; /*!< @brief when selecting an EPG fileitem, show the EPG info dialog if this setting is true. start playback on the selected channel if false AND fileitem has started */
int m_iPVRMinVideoCacheLevel; /*!< @brief cache up to this level in the video buffer buffer before resuming playback if the buffers run dry */
int m_iPVRMinAudioCacheLevel; /*!< @brief cache up to this level in the audio buffer before resuming playback if the buffers run dry */
bool m_bPVRCacheInDvdPlayer; /*!< @brief true to use "CACHESTATE_PVR" in CDVDPlayer (default) */
#include "guilib/LocalizeStrings.h"
#include "guilib/StereoscopicsManager.h"
#include "settings/AdvancedSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "threads/SingleLock.h"
#include "utils/log.h"
#include <vector>
#include "guilib/Resolution.h"
-#include "settings/ISettingCallback.h"
-#include "settings/ISubSettings.h"
+#include "settings/lib/ISettingCallback.h"
+#include "settings/lib/ISubSettings.h"
#include "threads/CriticalSection.h"
#include "utils/Observer.h"
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "ISetting.h"
-#include "SettingDefinitions.h"
-#include "utils/log.h"
-#include "utils/XBMCTinyXML.h"
-#include "utils/XMLUtils.h"
-
-using namespace std;
-
-ISetting::ISetting(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : m_id(id),
- m_settingsManager(settingsManager),
- m_visible(true),
- m_meetsRequirements(true),
- m_requirementCondition(settingsManager)
-{ }
-
-bool ISetting::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- if (node == NULL)
- return false;
-
- bool value;
- if (XMLUtils::GetBoolean(node, SETTING_XML_ELM_VISIBLE, value))
- m_visible = value;
-
- const TiXmlNode *requirementNode = node->FirstChild(SETTING_XML_ELM_REQUIREMENT);
- if (requirementNode == NULL)
- return true;
-
- return m_requirementCondition.Deserialize(requirementNode);
-}
-
-bool ISetting::DeserializeIdentification(const TiXmlNode *node, std::string &identification)
-{
- if (node == NULL)
- return false;
-
- const TiXmlElement *element = node->ToElement();
- if (element == NULL)
- return false;
-
- const char *idAttribute = element->Attribute(SETTING_XML_ATTR_ID);
- if (idAttribute == NULL || strlen(idAttribute) <= 0)
- return false;
-
- identification = idAttribute;
- return true;
-}
-
-void ISetting::CheckRequirements()
-{
- m_meetsRequirements = m_requirementCondition.Check();
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-#include <string>
-#include <vector>
-
-#include "SettingRequirement.h"
-
-class CSettingsManager;
-class TiXmlNode;
-
-/*!
- \ingroup settings
- \brief Interface defining the base of all setting objects
- */
-class ISetting
-{
-public:
- /*!
- \brief Creates a new setting object with the given identifier.
-
- \param id Identifier of the setting object
- \param settingsManager Reference to the settings manager
- */
- ISetting(const std::string &id, CSettingsManager *settingsManager = NULL);
- virtual ~ISetting() { }
-
- /*!
- \brief Deserializes the given XML node into the properties of the setting
- object.
-
- If the update parameter is true, the checks for mandatory properties are
- skipped and values are only updated.
-
- \param node XML node containing the properties of the setting object
- \param update Whether to perform checks for mandatory properties or not
- \return True if deserialization was successful, false otherwise
- */
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- /*!
- \brief Gets the identifier of the setting object.
-
- \return Identifier of the setting object
- */
- const std::string& GetId() const { return m_id; }
- /*!
- \brief Whether the setting object is visible or hidden.
-
- \return True if the setting object is visible, false otherwise
- */
- virtual bool IsVisible() const { return m_visible; }
- /*!
- \brief Sets the visibility state of the setting object.
-
- \param visible Whether the setting object shall be visible or not
- */
- virtual void SetVisible(bool visible) { m_visible = visible; }
-
- /*!
- \brief Whether the setting object meets all necessary requirements.
-
- \return True if the setting object meets all necessary requirements, false otherwise
- */
- virtual bool MeetsRequirements() const { return m_meetsRequirements; }
- /*!
- \brief Checks if the setting object meets all necessary requirements.
- */
- virtual void CheckRequirements();
- /*!
- \brief Sets whether the setting object meets all necessary requirements.
-
- \param visible Whether the setting object meets all necessary requirements or not
- */
- virtual void SetRequirementsMet(bool requirementsMet) { m_meetsRequirements = requirementsMet; }
-
- /*!
- \brief Deserializes the given XML node to retrieve a setting object's
- identifier.
-
- \param node XML node containing a setting object's identifier
- \param identification Will contain the deserialized setting object's identifier
- \return True if a setting object's identifier was deserialized, false otherwise
- */
- static bool DeserializeIdentification(const TiXmlNode *node, std::string &identification);
-
-protected:
- std::string m_id;
- CSettingsManager *m_settingsManager;
-
-private:
- bool m_visible;
- bool m_meetsRequirements;
- CSettingRequirement m_requirementCondition;
-};
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-class CSetting;
-class TiXmlNode;
-
-class ISettingCallback
-{
-public:
- virtual ~ISettingCallback() { }
-
- /*!
- \brief The value of the given setting is being changed.
-
- This callback is triggered whenever the value of a setting is being
- changed. The given CSetting already contains the new value and the handler
- of the callback has the possibility to allow or revert changing the value
- of the setting. In case of a revert OnSettingChanging() is called again to
- inform all listeners that the value change has been reverted.
-
- \param setting The setting whose value is being changed (already containing the changed value)
- \return True if the new value is acceptable otherwise false
- */
- virtual bool OnSettingChanging(const CSetting *setting) { return true; }
-
- /*!
- \brief The value of the given setting has changed.
-
- This callback is triggered whenever the value of a setting has been
- successfully changed (i.e. none of the OnSettingChanging() handlers)
- has reverted the change.
-
- \param setting The setting whose value has been changed
- */
- virtual void OnSettingChanged(const CSetting *setting) { }
-
- /*!
- \brief The given setting has been activated.
-
- This callback is triggered whenever the given setting has been activated.
- This callback is only fired for CSettingAction settings.
-
- \param setting The setting which has been activated.
- */
- virtual void OnSettingAction(const CSetting *setting) { }
-
- /*!
- \brief The given setting needs to be updated.
-
- This callback is triggered when a setting needs to be updated because its
- value is outdated. This only happens when initially loading the value of a
- setting and will not be triggered afterwards.
-
- \param setting The setting which needs to be updated.
- \return True if the setting has been successfully updated otherwise false
- */
- virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode) { return false; }
-
- /*!
- \brief The given property of the given setting has changed
-
- This callback is triggered when a property (e.g. enabled or the list of
- dynamic options) has changed.
-
- \param setting The setting which has a changed property
- \param propertyName The string representation of the changed property
- */
- virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName) { }
-};
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "ISettingControl.h"
-#include "SettingDefinitions.h"
-#include "utils/log.h"
-#include "utils/StringUtils.h"
-#include "utils/XBMCTinyXML.h"
-
-bool ISettingControl::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- if (node == NULL)
- return false;
-
- const TiXmlElement *elem = node->ToElement();
- if (elem == NULL)
- return false;
-
- const char *strTmp = elem->Attribute(SETTING_XML_ATTR_FORMAT);
- std::string format;
- if (strTmp != NULL)
- format = strTmp;
- if (!SetFormat(format))
- {
- CLog::Log(LOGERROR, "ISettingControl: error reading \"format\" attribute of <control>");
- return false;
- }
-
- if ((strTmp = elem->Attribute(SETTING_XML_ATTR_DELAYED)) != NULL)
- {
- if (!StringUtils::EqualsNoCase(strTmp, "false") && !StringUtils::EqualsNoCase(strTmp, "true"))
- {
- CLog::Log(LOGERROR, "ISettingControl: error reading \"delayed\" attribute of <control>");
- return false;
- }
- else
- m_delayed = StringUtils::EqualsNoCase(strTmp, "true");
- }
-
- return true;
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <string>
-
-class TiXmlNode;
-
-class ISettingControl
-{
-public:
- ISettingControl()
- : m_delayed(false)
- { }
- virtual ~ISettingControl() { }
-
- virtual std::string GetType() const = 0;
- const std::string& GetFormat() const { return m_format; }
- bool GetDelayed() const { return m_delayed; }
-
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
-protected:
- virtual bool SetFormat(const std::string &format) { return true; }
-
- bool m_delayed;
- std::string m_format;
-};
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <string>
-
-class ISettingControl;
-
-/*!
- \ingroup settings
- \brief Interface for creating a new setting control of a custom setting control type.
- */
-class ISettingControlCreator
-{
-public:
- virtual ~ISettingControlCreator() { }
-
- /*!
- \brief Creates a new setting control of the given custom setting control type.
-
- \param controlType string representation of the setting control type
- \return A new setting control object of the given (custom) setting control type or NULL if the setting control type is unknown
- */
- virtual ISettingControl* CreateControl(const std::string &controlType) const = 0;
-};
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <string>
-
-class CSetting;
-class CSettingsManager;
-
-/*!
- \ingroup settings
- \brief Interface for creating a new setting of a custom setting type.
- */
-class ISettingCreator
-{
-public:
- virtual ~ISettingCreator() { }
-
- /*!
- \brief Creates a new setting of the given custom setting type.
-
- \param settingType string representation of the setting type
- \param settingId Identifier of the setting to be created
- \param settingsManager Reference to the settings manager
- \return A new setting object of the given (custom) setting type or NULL if the setting type is unknown
- */
- virtual CSetting* CreateSetting(const std::string &settingType, const std::string &settingId, CSettingsManager *settingsManager = NULL) const = 0;
-};
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-/*!
- \ingroup settings
- \brief Interface defining methods being called by the settings system if an
- action is performed on multiple/all settings
- */
-class ISettingsHandler
-{
-public:
- virtual ~ISettingsHandler() { }
-
- /*!
- \brief Settings loading has been initiated.
-
- \return True if the settings should be loaded, false if the loading should be aborted.
- */
- virtual bool OnSettingsLoading() { return true; }
- /*!
- \brief Settings have been loaded.
-
- This callback can be used to trigger loading other settings.
- */
- virtual void OnSettingsLoaded() { }
- /*!
- \brief Settings saving has been initiated.
-
- \return True if the settings should be saved, false if the saving should be aborted.
- */
- virtual bool OnSettingsSaving() const { return true; }
- /*!
- \brief Settings have been saved.
-
- This callback can be used to trigger saving other settings.
- */
- virtual void OnSettingsSaved() const { }
- /*!
- \brief Setting values have been unloaded.
-
- This callback can be used to trigger uninitializing any state variables
- (e.g. before re-loading the settings).
- */
- virtual void OnSettingsUnloaded() { }
- /*!
- \brief Settings have been cleared.
-
- This callback can be used to trigger clearing any state variables.
- */
- virtual void OnSettingsCleared() { }
-};
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-class TiXmlNode;
-
-/*!
- \ingroup settings
- \brief Interface defining methods to load additional setting values from an
- XML file being loaded by the settings system.
- */
-class ISubSettings
-{
-public:
- virtual ~ISubSettings() { }
-
- /*!
- \brief Load settings from the given XML node.
-
- \param settings XML node containing setting values
- \return True if loading the settings was successful, false otherwise.
- */
- virtual bool Load(const TiXmlNode *settings) { return true; }
- /*!
- \brief Save settings to the given XML node.
-
- \param settings XML node in which the settings will be saved
- \return True if saving the settings was successful, false otherwise.
- */
- virtual bool Save(TiXmlNode *settings) const { return true; }
- /*!
- \brief Clear any loaded setting values.
- */
- virtual void Clear() { }
-};
SRCS=AdvancedSettings.cpp \
DisplaySettings.cpp \
- ISetting.cpp \
- ISettingControl.cpp \
MediaSettings.cpp \
MediaSourceSettings.cpp \
- Setting.cpp \
SettingAddon.cpp \
- SettingCategoryAccess.cpp \
- SettingConditions.cpp \
SettingControl.cpp \
- SettingDependency.cpp \
SettingPath.cpp \
- SettingSection.cpp \
Settings.cpp \
- SettingsManager.cpp \
- SettingRequirement.cpp \
- SettingUpdate.cpp \
SkinSettings.cpp \
VideoSettings.cpp \
#include "interfaces/Builtins.h"
#include "music/MusicDatabase.h"
#include "profiles/ProfilesManager.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "storage/MediaManager.h"
#include "threads/SingleLock.h"
#include "utils/log.h"
#include <map>
#include <string>
-#include "settings/ISettingCallback.h"
-#include "settings/ISubSettings.h"
+#include "settings/lib/ISettingCallback.h"
+#include "settings/lib/ISubSettings.h"
#include "settings/VideoSettings.h"
#include "threads/CriticalSection.h"
#include <string>
#include "MediaSource.h"
-#include "settings/ISettingsHandler.h"
+#include "settings/lib/ISettingsHandler.h"
class TiXmlNode;
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <sstream>
-
-#include "Setting.h"
-#include "SettingDefinitions.h"
-#include "SettingsManager.h"
-#include "utils/log.h"
-#include "utils/StringUtils.h"
-#include "utils/XBMCTinyXML.h"
-#include "utils/XMLUtils.h"
-
-CSetting::CSetting(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : ISetting(id, settingsManager),
- m_callback(NULL),
- m_label(-1), m_help(-1),
- m_level(SettingLevelStandard),
- m_control(NULL),
- m_changed(false)
-{ }
-
-CSetting::CSetting(const std::string &id, const CSetting &setting)
- : ISetting(id, setting.m_settingsManager),
- m_callback(NULL),
- m_label(-1), m_help(-1),
- m_level(SettingLevelStandard),
- m_control(NULL),
- m_changed(false)
-{
- m_id = id;
- Copy(setting);
-}
-
-CSetting::~CSetting()
-{
- delete m_control;
-}
-
-bool CSetting::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- // handle <visible> conditions
- if (!ISetting::Deserialize(node, update))
- return false;
-
- const TiXmlElement *element = node->ToElement();
- if (element == NULL)
- return false;
-
- // get the attributes label and help
- int tmp = -1;
- if (element->QueryIntAttribute(SETTING_XML_ATTR_LABEL, &tmp) == TIXML_SUCCESS && tmp > 0)
- m_label = tmp;
-
- tmp = -1;
- if (element->QueryIntAttribute(SETTING_XML_ATTR_HELP, &tmp) == TIXML_SUCCESS && tmp > 0)
- m_help = tmp;
- const char *parentSetting = element->Attribute(SETTING_XML_ATTR_PARENT);
- if (parentSetting != NULL)
- m_parentSetting = parentSetting;
-
- // get the <level>
- int level = -1;
- if (XMLUtils::GetInt(node, SETTING_XML_ELM_LEVEL, level))
- m_level = (SettingLevel)level;
-
- if (m_level < (int)SettingLevelBasic || m_level > (int)SettingLevelInternal)
- m_level = SettingLevelStandard;
-
- const TiXmlNode *dependencies = node->FirstChild(SETTING_XML_ELM_DEPENDENCIES);
- if (dependencies != NULL)
- {
- const TiXmlNode *dependencyNode = dependencies->FirstChild(SETTING_XML_ELM_DEPENDENCY);
- while (dependencyNode != NULL)
- {
- CSettingDependency dependency(m_settingsManager);
- if (dependency.Deserialize(dependencyNode))
- m_dependencies.push_back(dependency);
- else
- CLog::Log(LOGWARNING, "CSetting: error reading <dependency> tag of \"%s\"", m_id.c_str());
-
- dependencyNode = dependencyNode->NextSibling(SETTING_XML_ELM_DEPENDENCY);
- }
- }
-
- const TiXmlElement *control = node->FirstChildElement(SETTING_XML_ELM_CONTROL);
- if (control != NULL)
- {
- const char *controlType = control->Attribute(SETTING_XML_ATTR_TYPE);
- if (controlType == NULL)
- {
- CLog::Log(LOGERROR, "CSetting: error reading \"type\" attribute of <control> tag of \"%s\"", m_id.c_str());
- return false;
- }
-
- m_control = m_settingsManager->CreateControl(controlType);
- if (m_control == NULL || !m_control->Deserialize(control, update))
- {
- CLog::Log(LOGERROR, "CSetting: error reading <control> tag of \"%s\"", m_id.c_str());
- return false;
- }
- }
- else if (!update && m_level < SettingLevelInternal)
- {
- CLog::Log(LOGERROR, "CSetting: missing <control> tag of \"%s\"", m_id.c_str());
- return false;
- }
-
- const TiXmlNode *updates = node->FirstChild(SETTING_XML_ELM_UPDATES);
- if (updates != NULL)
- {
- const TiXmlElement *updateElem = updates->FirstChildElement(SETTING_XML_ELM_UPDATE);
- while (updateElem != NULL)
- {
- CSettingUpdate update;
- if (update.Deserialize(updateElem))
- {
- if (!m_updates.insert(update).second)
- CLog::Log(LOGWARNING, "CSetting: duplicate <update> definition for \"%s\"", m_id.c_str());
- }
- else
- CLog::Log(LOGWARNING, "CSetting: error reading <update> tag of \"%s\"", m_id.c_str());
-
- updateElem = updateElem->NextSiblingElement(SETTING_XML_ELM_UPDATE);
- }
- }
-
- return true;
-}
-
-bool CSetting::IsEnabled() const
-{
- bool enabled = true;
- for (SettingDependencies::const_iterator depIt = m_dependencies.begin(); depIt != m_dependencies.end(); ++depIt)
- {
- if (depIt->GetType() != SettingDependencyTypeEnable)
- continue;
-
- if (!depIt->Check())
- {
- enabled = false;
- break;
- }
- }
-
- return enabled;
-}
-
-bool CSetting::IsVisible() const
-{
- if (!ISetting::IsVisible())
- return false;
-
- bool visible = true;
- for (SettingDependencies::const_iterator depIt = m_dependencies.begin(); depIt != m_dependencies.end(); ++depIt)
- {
- if (depIt->GetType() != SettingDependencyTypeVisible)
- continue;
-
- if (!depIt->Check())
- {
- visible = false;
- break;
- }
- }
-
- return visible;
-}
-
-bool CSetting::OnSettingChanging(const CSetting *setting)
-{
- if (m_callback == NULL)
- return true;
-
- return m_callback->OnSettingChanging(setting);
-}
-
-void CSetting::OnSettingChanged(const CSetting *setting)
-{
- if (m_callback == NULL)
- return;
-
- m_callback->OnSettingChanged(setting);
-}
-
-void CSetting::OnSettingAction(const CSetting *setting)
-{
- if (m_callback == NULL)
- return;
-
- m_callback->OnSettingAction(setting);
-}
-
-bool CSetting::OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode)
-{
- if (m_callback == NULL)
- return false;
-
- return m_callback->OnSettingUpdate(setting, oldSettingId, oldSettingNode);
-}
-
-void CSetting::OnSettingPropertyChanged(const CSetting *setting, const char *propertyName)
-{
- if (m_callback == NULL)
- return;
-
- m_callback->OnSettingPropertyChanged(setting, propertyName);
-}
-
-void CSetting::Copy(const CSetting &setting)
-{
- SetVisible(setting.IsVisible());
- SetRequirementsMet(setting.MeetsRequirements());
- m_callback = setting.m_callback;
- m_label = setting.m_label;
- m_help = setting.m_help;
- m_level = setting.m_level;
-
- delete m_control;
- if (setting.m_control != NULL)
- {
- m_control = m_settingsManager->CreateControl(setting.m_control->GetType());
- *m_control = *setting.m_control;
- }
- else
- m_control = NULL;
-
- m_dependencies = setting.m_dependencies;
- m_updates = setting.m_updates;
- m_changed = setting.m_changed;
-}
-
-CSettingBool::CSettingBool(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_value(false), m_default(false)
-{ }
-
-CSettingBool::CSettingBool(const std::string &id, const CSettingBool &setting)
- : CSetting(id, setting)
-{
- copy(setting);
-}
-
-CSettingBool::CSettingBool(const std::string &id, int label, bool value, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_value(value), m_default(value)
-{
- m_label = label;
-}
-
-bool CSettingBool::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- CExclusiveLock lock(m_critical);
-
- if (!CSetting::Deserialize(node, update))
- return false;
-
- // get the default value
- bool value;
- if (XMLUtils::GetBoolean(node, SETTING_XML_ELM_DEFAULT, value))
- m_value = m_default = value;
- else if (!update)
- {
- CLog::Log(LOGERROR, "CSettingBool: error reading the default value of \"%s\"", m_id.c_str());
- return false;
- }
-
- return true;
-}
-
-bool CSettingBool::FromString(const std::string &value)
-{
- bool bValue;
- if (!fromString(value, bValue))
- return false;
-
- return SetValue(bValue);
-}
-
-std::string CSettingBool::ToString() const
-{
- return m_value ? "true" : "false";
-}
-
-bool CSettingBool::Equals(const std::string &value) const
-{
- bool bValue;
- return (fromString(value, bValue) && m_value == bValue);
-}
-
-bool CSettingBool::CheckValidity(const std::string &value) const
-{
- bool bValue;
- return fromString(value, bValue);
-}
-
-bool CSettingBool::SetValue(bool value)
-{
- CExclusiveLock lock(m_critical);
-
- if (value == m_value)
- return true;
-
- bool oldValue = m_value;
- m_value = value;
-
- if (!OnSettingChanging(this))
- {
- m_value = oldValue;
-
- // the setting couldn't be changed because one of the
- // callback handlers failed the OnSettingChanging()
- // callback so we need to let all the callback handlers
- // know that the setting hasn't changed
- OnSettingChanging(this);
- return false;
- }
-
- m_changed = m_value != m_default;
- OnSettingChanged(this);
- return true;
-}
-
-void CSettingBool::SetDefault(bool value)
-{
- CExclusiveLock lock(m_critical);
-
- m_default = value;
- if (!m_changed)
- m_value = m_default;
-}
-
-void CSettingBool::copy(const CSettingBool &setting)
-{
- CSetting::Copy(setting);
-
- m_value = setting.m_value;
- m_default = setting.m_default;
-}
-
-bool CSettingBool::fromString(const std::string &strValue, bool &value) const
-{
- if (StringUtils::EqualsNoCase(strValue, "true"))
- {
- value = true;
- return true;
- }
- if (StringUtils::EqualsNoCase(strValue, "false"))
- {
- value = false;
- return true;
- }
-
- return false;
-}
-
-CSettingInt::CSettingInt(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_value(0), m_default(0),
- m_min(0), m_step(1), m_max(0)
-{ }
-
-CSettingInt::CSettingInt(const std::string &id, const CSettingInt &setting)
- : CSetting(id, setting)
-{
- copy(setting);
-}
-
-CSettingInt::CSettingInt(const std::string &id, int label, int value, int minimum, int step, int maximum, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_value(value), m_default(value),
- m_min(minimum), m_step(step), m_max(maximum)
-{
- m_label = label;
-}
-
-CSettingInt::CSettingInt(const std::string &id, int label, int value, const StaticIntegerSettingOptions &options, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_value(value), m_default(value),
- m_min(0), m_step(1), m_max(0),
- m_options(options)
-{
- m_label = label;
-}
-
-bool CSettingInt::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- CExclusiveLock lock(m_critical);
-
- if (!CSetting::Deserialize(node, update))
- return false;
-
- // get the default value
- int value;
- if (XMLUtils::GetInt(node, SETTING_XML_ELM_DEFAULT, value))
- m_value = m_default = value;
- else if (!update)
- {
- CLog::Log(LOGERROR, "CSettingInt: error reading the default value of \"%s\"", m_id.c_str());
- return false;
- }
-
- const TiXmlNode *constraints = node->FirstChild(SETTING_XML_ELM_CONSTRAINTS);
- if (constraints != NULL)
- {
- // get the entries
- const TiXmlNode *options = constraints->FirstChild(SETTING_XML_ELM_OPTIONS);
- if (options != NULL && options->FirstChild() != NULL)
- {
- if (options->FirstChild()->Type() == TiXmlNode::TINYXML_TEXT)
- m_optionsFiller = options->FirstChild()->ValueStr();
- else
- {
- m_options.clear();
- const TiXmlElement *optionElement = options->FirstChildElement(SETTING_XML_ELM_OPTION);
- while (optionElement != NULL)
- {
- std::pair<int, int> entry;
- if (optionElement->QueryIntAttribute(SETTING_XML_ATTR_LABEL, &entry.first) == TIXML_SUCCESS && entry.first > 0)
- {
- entry.second = strtol(optionElement->FirstChild()->Value(), NULL, 10);
- m_options.push_back(entry);
- }
-
- optionElement = optionElement->NextSiblingElement(SETTING_XML_ELM_OPTION);
- }
- }
- }
-
- // get minimum
- XMLUtils::GetInt(constraints, SETTING_XML_ELM_MINIMUM, m_min);
- // get step
- XMLUtils::GetInt(constraints, SETTING_XML_ELM_STEP, m_step);
- // get maximum
- XMLUtils::GetInt(constraints, SETTING_XML_ELM_MAXIMUM, m_max);
- }
-
- return true;
-}
-
-bool CSettingInt::FromString(const std::string &value)
-{
- int iValue;
- if (!fromString(value, iValue))
- return false;
-
- return SetValue(iValue);
-}
-
-std::string CSettingInt::ToString() const
-{
- std::ostringstream oss;
- oss << m_value;
-
- return oss.str();
-}
-
-bool CSettingInt::Equals(const std::string &value) const
-{
- int iValue;
- return (fromString(value, iValue) && m_value == iValue);
-}
-
-bool CSettingInt::CheckValidity(const std::string &value) const
-{
- int iValue;
- if (!fromString(value, iValue))
- return false;
-
- return CheckValidity(iValue);
-}
-
-bool CSettingInt::CheckValidity(int value) const
-{
- if (!m_options.empty())
- {
- //if the setting is an std::map, check if we got a valid value before assigning it
- bool ok = false;
- for (StaticIntegerSettingOptions::const_iterator it = m_options.begin(); it != m_options.end(); ++it)
- {
- if (it->second == value)
- {
- ok = true;
- break;
- }
- }
-
- if (!ok)
- return false;
- }
- else if (m_optionsFiller.empty() && m_min != m_max &&
- (value < m_min || value > m_max))
- return false;
-
- return true;
-}
-
-bool CSettingInt::SetValue(int value)
-{
- CExclusiveLock lock(m_critical);
-
- if (value == m_value)
- return true;
-
- if (!CheckValidity(value))
- return false;
-
- int oldValue = m_value;
- m_value = value;
-
- if (!OnSettingChanging(this))
- {
- m_value = oldValue;
-
- // the setting couldn't be changed because one of the
- // callback handlers failed the OnSettingChanging()
- // callback so we need to let all the callback handlers
- // know that the setting hasn't changed
- OnSettingChanging(this);
- return false;
- }
-
- m_changed = m_value != m_default;
- OnSettingChanged(this);
- return true;
-}
-
-void CSettingInt::SetDefault(int value)
-{
- CExclusiveLock lock(m_critical);
-
- m_default = value;
- if (!m_changed)
- m_value = m_default;
-}
-
-SettingOptionsType CSettingInt::GetOptionsType() const
-{
- CSharedLock lock(m_critical);
- if (!m_options.empty())
- return SettingOptionsTypeStatic;
- if (!m_optionsFiller.empty())
- return SettingOptionsTypeDynamic;
-
- return SettingOptionsTypeNone;
-}
-
-DynamicIntegerSettingOptions CSettingInt::UpdateDynamicOptions()
-{
- CExclusiveLock lock(m_critical);
- DynamicIntegerSettingOptions options;
- if (m_optionsFiller.empty() || m_settingsManager == NULL)
- return options;
-
- IntegerSettingOptionsFiller filler = (IntegerSettingOptionsFiller)m_settingsManager->GetSettingOptionsFiller(this);
- if (filler == NULL)
- return options;
-
- int bestMatchingValue = m_value;
- filler(this, options, bestMatchingValue);
-
- if (bestMatchingValue != m_value)
- SetValue(bestMatchingValue);
-
- bool changed = m_dynamicOptions.size() != options.size();
- if (!changed)
- {
- for (size_t index = 0; index < options.size(); index++)
- {
- if (options[index].first.compare(m_dynamicOptions[index].first) != 0 ||
- options[index].second != m_dynamicOptions[index].second)
- {
- changed = true;
- break;
- }
- }
- }
-
- if (changed)
- {
- m_dynamicOptions = options;
- OnSettingPropertyChanged(this, "options");
- }
-
- return options;
-}
-
-void CSettingInt::copy(const CSettingInt &setting)
-{
- CSetting::Copy(setting);
-
- CExclusiveLock lock(m_critical);
-
- m_value = setting.m_value;
- m_default = setting.m_default;
- m_min = setting.m_min;
- m_step = setting.m_step;
- m_max = setting.m_max;
- m_options = setting.m_options;
- m_optionsFiller = setting.m_optionsFiller;
-}
-
-bool CSettingInt::fromString(const std::string &strValue, int &value)
-{
- if (strValue.empty())
- return false;
-
- char *end = NULL;
- value = (int)strtol(strValue.c_str(), &end, 10);
- if (end != NULL && *end != '\0')
- return false;
-
- return true;
-}
-
-CSettingNumber::CSettingNumber(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_value(0.0), m_default(0.0),
- m_min(0.0), m_step(1.0), m_max(0.0)
-{ }
-
-CSettingNumber::CSettingNumber(const std::string &id, const CSettingNumber &setting)
- : CSetting(id, setting)
-{
- copy(setting);
-}
-
-CSettingNumber::CSettingNumber(const std::string &id, int label, float value, float minimum, float step, float maximum, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_value(value), m_default(value),
- m_min(minimum), m_step(step), m_max(maximum)
-{
- m_label = label;
-}
-
-bool CSettingNumber::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- CExclusiveLock lock(m_critical);
-
- if (!CSetting::Deserialize(node, update))
- return false;
-
- // get the default value
- double value;
- if (XMLUtils::GetDouble(node, SETTING_XML_ELM_DEFAULT, value))
- m_value = m_default = value;
- else if (!update)
- {
- CLog::Log(LOGERROR, "CSettingNumber: error reading the default value of \"%s\"", m_id.c_str());
- return false;
- }
-
- const TiXmlNode *constraints = node->FirstChild(SETTING_XML_ELM_CONSTRAINTS);
- if (constraints != NULL)
- {
- // get the minimum value
- XMLUtils::GetDouble(constraints, SETTING_XML_ELM_MINIMUM, m_min);
- // get the step value
- XMLUtils::GetDouble(constraints, SETTING_XML_ELM_STEP, m_step);
- // get the maximum value
- XMLUtils::GetDouble(constraints, SETTING_XML_ELM_MAXIMUM, m_max);
- }
-
- return true;
-}
-
-bool CSettingNumber::FromString(const std::string &value)
-{
- double dValue;
- if (!fromString(value, dValue))
- return false;
-
- return SetValue(dValue);
-}
-
-std::string CSettingNumber::ToString() const
-{
- std::ostringstream oss;
- oss << m_value;
-
- return oss.str();
-}
-
-bool CSettingNumber::Equals(const std::string &value) const
-{
- double dValue;
- CSharedLock lock(m_critical);
- return (fromString(value, dValue) && m_value == dValue);
-}
-
-bool CSettingNumber::CheckValidity(const std::string &value) const
-{
- double dValue;
- if (!fromString(value, dValue))
- return false;
-
- return CheckValidity(dValue);
-}
-
-bool CSettingNumber::CheckValidity(double value) const
-{
- CSharedLock lock(m_critical);
- if (m_min != m_max &&
- (value < m_min || value > m_max))
- return false;
-
- return true;
-}
-
-bool CSettingNumber::SetValue(double value)
-{
- CExclusiveLock lock(m_critical);
-
- if (value == m_value)
- return true;
-
- if (!CheckValidity(value))
- return false;
-
- double oldValue = m_value;
- m_value = value;
-
- if (!OnSettingChanging(this))
- {
- m_value = oldValue;
-
- // the setting couldn't be changed because one of the
- // callback handlers failed the OnSettingChanging()
- // callback so we need to let all the callback handlers
- // know that the setting hasn't changed
- OnSettingChanging(this);
- return false;
- }
-
- m_changed = m_value != m_default;
- OnSettingChanged(this);
- return true;
-}
-
-void CSettingNumber::SetDefault(double value)
-{
- CExclusiveLock lock(m_critical);
-
- m_default = value;
- if (!m_changed)
- m_value = m_default;
-}
-
-void CSettingNumber::copy(const CSettingNumber &setting)
-{
- CSetting::Copy(setting);
- CExclusiveLock lock(m_critical);
-
- m_value = setting.m_value;
- m_default = setting.m_default;
- m_min = setting.m_min;
- m_step = setting.m_step;
- m_max = setting.m_max;
-}
-
-bool CSettingNumber::fromString(const std::string &strValue, double &value)
-{
- if (strValue.empty())
- return false;
-
- char *end = NULL;
- value = (int)strtod(strValue.c_str(), &end);
- if (end != NULL && *end != '\0')
- return false;
-
- return true;
-}
-
-CSettingString::CSettingString(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_allowEmpty(false)
-{ }
-
-CSettingString::CSettingString(const std::string &id, const CSettingString &setting)
- : CSetting(id, setting)
-{
- copy(setting);
-}
-
-CSettingString::CSettingString(const std::string &id, int label, const std::string &value, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager),
- m_value(value), m_default(value),
- m_allowEmpty(false)
-{
- m_label = label;
-}
-
-bool CSettingString::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- CExclusiveLock lock(m_critical);
-
- if (!CSetting::Deserialize(node, update))
- return false;
-
- const TiXmlNode *constraints = node->FirstChild(SETTING_XML_ELM_CONSTRAINTS);
- if (constraints != NULL)
- {
- // get allowempty (needs to be parsed before parsing the default value)
- XMLUtils::GetBoolean(constraints, SETTING_XML_ELM_ALLOWEMPTY, m_allowEmpty);
-
- // get the entries
- const TiXmlNode *options = constraints->FirstChild(SETTING_XML_ELM_OPTIONS);
- if (options != NULL && options->FirstChild() != NULL &&
- options->FirstChild()->Type() == TiXmlNode::TINYXML_TEXT)
- m_optionsFiller = options->FirstChild()->ValueStr();
- }
-
- // get the default value
- CStdString value;
- if (XMLUtils::GetString(node, SETTING_XML_ELM_DEFAULT, value) && !value.empty())
- m_value = m_default = value;
- else if (!update && !m_allowEmpty)
- {
- CLog::Log(LOGERROR, "CSettingString: error reading the default value of \"%s\"", m_id.c_str());
- return false;
- }
-
- return true;
-}
-
-bool CSettingString::CheckValidity(const std::string &value) const
-{
- CSharedLock lock(m_critical);
- if (!m_allowEmpty && value.empty())
- return false;
-
- return true;
-}
-
-bool CSettingString::SetValue(const std::string &value)
-{
- CExclusiveLock lock(m_critical);
-
- if (value == m_value)
- return true;
-
- if (!CheckValidity(value))
- return false;
-
- std::string oldValue = m_value;
- m_value = value;
-
- if (!OnSettingChanging(this))
- {
- m_value = oldValue;
-
- // the setting couldn't be changed because one of the
- // callback handlers failed the OnSettingChanging()
- // callback so we need to let all the callback handlers
- // know that the setting hasn't changed
- OnSettingChanging(this);
- return false;
- }
-
- m_changed = m_value != m_default;
- OnSettingChanged(this);
- return true;
-}
-
-void CSettingString::SetDefault(const std::string &value)
-{
- CSharedLock lock(m_critical);
-
- m_default = value;
- if (!m_changed)
- m_value = m_default;
-}
-
-SettingOptionsType CSettingString::GetOptionsType() const
-{
- CSharedLock lock(m_critical);
- if (!m_optionsFiller.empty())
- return SettingOptionsTypeDynamic;
-
- return SettingOptionsTypeNone;
-}
-
-DynamicStringSettingOptions CSettingString::UpdateDynamicOptions()
-{
- CExclusiveLock lock(m_critical);
- DynamicStringSettingOptions options;
- if (m_optionsFiller.empty() || m_settingsManager == NULL)
- return options;
-
- StringSettingOptionsFiller filler = (StringSettingOptionsFiller)m_settingsManager->GetSettingOptionsFiller(this);
- if (filler == NULL)
- return options;
-
- std::string bestMatchingValue = m_value;
- filler(this, options, bestMatchingValue);
-
- if (bestMatchingValue != m_value)
- SetValue(bestMatchingValue);
-
- // check if the list of items has changed
- bool changed = m_dynamicOptions.size() != options.size();
- if (!changed)
- {
- for (size_t index = 0; index < options.size(); index++)
- {
- if (options[index].first.compare(m_dynamicOptions[index].first) != 0 ||
- options[index].second.compare(m_dynamicOptions[index].second) != 0)
- {
- changed = true;
- break;
- }
- }
- }
-
- if (changed)
- {
- m_dynamicOptions = options;
- OnSettingPropertyChanged(this, "options");
- }
-
- return options;
-}
-
-void CSettingString::copy(const CSettingString &setting)
-{
- CSetting::Copy(setting);
-
- CExclusiveLock lock(m_critical);
- m_value = setting.m_value;
- m_default = setting.m_default;
- m_allowEmpty = setting.m_allowEmpty;
-}
-
-CSettingAction::CSettingAction(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : CSetting(id, settingsManager)
-{ }
-
-CSettingAction::CSettingAction(const std::string &id, const CSettingAction &setting)
- : CSetting(id, setting)
-{ }
-
-bool CSettingAction::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- CSharedLock lock(m_critical);
-
- if (!CSetting::Deserialize(node, update))
- return false;
-
- return true;
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-
-#include "ISetting.h"
-#include "ISettingCallback.h"
-#include "ISettingControl.h"
-#include "SettingDependency.h"
-#include "SettingUpdate.h"
-#include "threads/SharedSection.h"
-
-/*!
- \ingroup settings
- \brief Basic setting types available in the settings system.
- */
-typedef enum {
- SettingTypeNone = 0,
- SettingTypeBool,
- SettingTypeInteger,
- SettingTypeNumber,
- SettingTypeString,
- SettingTypeAction
-} SettingType;
-
-/*!
- \ingroup settings
- \brief Levels which every setting is assigned to.
- */
-typedef enum {
- SettingLevelBasic = 0,
- SettingLevelStandard,
- SettingLevelAdvanced,
- SettingLevelExpert,
- SettingLevelInternal
-} SettingLevel;
-
-typedef enum {
- SettingOptionsTypeNone = 0,
- SettingOptionsTypeStatic,
- SettingOptionsTypeDynamic
-} SettingOptionsType;
-
-typedef std::pair<int, int> StaticIntegerSettingOption;
-typedef std::vector<StaticIntegerSettingOption> StaticIntegerSettingOptions;
-typedef std::pair<std::string, int> DynamicIntegerSettingOption;
-typedef std::vector<DynamicIntegerSettingOption> DynamicIntegerSettingOptions;
-typedef std::pair<std::string, std::string> DynamicStringSettingOption;
-typedef std::vector<DynamicStringSettingOption> DynamicStringSettingOptions;
-
-/*!
- \ingroup settings
- \brief Setting base class containing all the properties which are common to
- all settings independent of the setting type.
- */
-class CSetting : public ISetting,
- protected ISettingCallback
-{
-public:
- CSetting(const std::string &id, CSettingsManager *settingsManager = NULL);
- CSetting(const std::string &id, const CSetting &setting);
- virtual ~CSetting();
-
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- virtual int GetType() const = 0;
- virtual bool FromString(const std::string &value) = 0;
- virtual std::string ToString() const = 0;
- virtual bool Equals(const std::string &value) const = 0;
- virtual bool CheckValidity(const std::string &value) const = 0;
- virtual void Reset() = 0;
-
- int GetLabel() const { return m_label; }
- void SetLabel(int label) { m_label = label; }
- int GetHelp() const { return m_help; }
- void SetHelp(int help) { m_help = help; }
- bool IsEnabled() const;
- const std::string& GetParent() const { return m_parentSetting; }
- SettingLevel GetLevel() const { return m_level; }
- const ISettingControl* GetControl() const { return m_control; }
- void SetControl(ISettingControl* control) { m_control = control; }
- const SettingDependencies& GetDependencies() const { return m_dependencies; }
- const std::set<CSettingUpdate>& GetUpdates() const { return m_updates; }
-
- // overrides of ISetting
- virtual bool IsVisible() const;
-
-protected:
- friend class CSettingsManager;
-
- virtual bool OnSettingChanging(const CSetting *setting);
- virtual void OnSettingChanged(const CSetting *setting);
- virtual void OnSettingAction(const CSetting *setting);
- virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode);
- virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName);
-
- void Copy(const CSetting &setting);
-
- ISettingCallback *m_callback;
- int m_label;
- int m_help;
- std::string m_parentSetting;
- SettingLevel m_level;
- ISettingControl *m_control;
- SettingDependencies m_dependencies;
- std::set<CSettingUpdate> m_updates;
- bool m_changed;
- CSharedSection m_critical;
-};
-
-typedef std::vector<CSetting *> SettingList;
-
-/*!
- \ingroup settings
- \brief Boolean setting implementation.
- \sa CSetting
- */
-class CSettingBool : public CSetting
-{
-public:
- CSettingBool(const std::string &id, CSettingsManager *settingsManager = NULL);
- CSettingBool(const std::string &id, const CSettingBool &setting);
- CSettingBool(const std::string &id, int label, bool value, CSettingsManager *settingsManager = NULL);
- virtual ~CSettingBool() { }
-
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- virtual int GetType() const { return SettingTypeBool; }
- virtual bool FromString(const std::string &value);
- virtual std::string ToString() const;
- virtual bool Equals(const std::string &value) const;
- virtual bool CheckValidity(const std::string &value) const;
- virtual void Reset() { SetValue(m_default); }
-
- bool GetValue() const { CSharedLock lock(m_critical); return m_value; }
- bool SetValue(bool value);
- bool GetDefault() const { return m_default; }
- void SetDefault(bool value);
-
-private:
- void copy(const CSettingBool &setting);
- bool fromString(const std::string &strValue, bool &value) const;
-
- bool m_value;
- bool m_default;
-};
-
-/*!
- \ingroup settings
- \brief Integer setting implementation
- \sa CSetting
- */
-class CSettingInt : public CSetting
-{
-public:
- CSettingInt(const std::string &id, CSettingsManager *settingsManager = NULL);
- CSettingInt(const std::string &id, const CSettingInt &setting);
- CSettingInt(const std::string &id, int label, int value, int minimum, int step, int maximum, CSettingsManager *settingsManager = NULL);
- CSettingInt(const std::string &id, int label, int value, const StaticIntegerSettingOptions &options, CSettingsManager *settingsManager = NULL);
- virtual ~CSettingInt() { }
-
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- virtual int GetType() const { return SettingTypeInteger; }
- virtual bool FromString(const std::string &value);
- virtual std::string ToString() const;
- virtual bool Equals(const std::string &value) const;
- virtual bool CheckValidity(const std::string &value) const;
- virtual bool CheckValidity(int value) const;
- virtual void Reset() { SetValue(m_default); }
-
- int GetValue() const { CSharedLock lock(m_critical); return m_value; }
- bool SetValue(int value);
- int GetDefault() const { return m_default; }
- void SetDefault(int value);
-
- int GetMinimum() const { return m_min; }
- int GetStep() const { return m_step; }
- int GetMaximum() const { return m_max; }
-
- SettingOptionsType GetOptionsType() const;
- const StaticIntegerSettingOptions& GetOptions() const { return m_options; }
- const std::string& GetOptionsFiller() const { return m_optionsFiller; }
- DynamicIntegerSettingOptions UpdateDynamicOptions();
-
-private:
- void copy(const CSettingInt &setting);
- static bool fromString(const std::string &strValue, int &value);
-
- int m_value;
- int m_default;
- int m_min;
- int m_step;
- int m_max;
- StaticIntegerSettingOptions m_options;
- std::string m_optionsFiller;
- DynamicIntegerSettingOptions m_dynamicOptions;
-};
-
-/*!
- \ingroup settings
- \brief Real number setting implementation.
- \sa CSetting
- */
-class CSettingNumber : public CSetting
-{
-public:
- CSettingNumber(const std::string &id, CSettingsManager *settingsManager = NULL);
- CSettingNumber(const std::string &id, const CSettingNumber &setting);
- CSettingNumber(const std::string &id, int label, float value, float minimum, float step, float maximum, CSettingsManager *settingsManager = NULL);
- virtual ~CSettingNumber() { }
-
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- virtual int GetType() const { return SettingTypeNumber; }
- virtual bool FromString(const std::string &value);
- virtual std::string ToString() const;
- virtual bool Equals(const std::string &value) const;
- virtual bool CheckValidity(const std::string &value) const;
- virtual bool CheckValidity(double value) const;
- virtual void Reset() { SetValue(m_default); }
-
- double GetValue() const { CSharedLock lock(m_critical); return m_value; }
- bool SetValue(double value);
- double GetDefault() const { return m_default; }
- void SetDefault(double value);
-
- double GetMinimum() const { return m_min; }
- double GetStep() const { return m_step; }
- double GetMaximum() const { return m_max; }
-
-private:
- virtual void copy(const CSettingNumber &setting);
- static bool fromString(const std::string &strValue, double &value);
-
- double m_value;
- double m_default;
- double m_min;
- double m_step;
- double m_max;
-};
-
-/*!
- \ingroup settings
- \brief String setting implementation.
- \sa CSetting
- */
-class CSettingString : public CSetting
-{
-public:
- CSettingString(const std::string &id, CSettingsManager *settingsManager = NULL);
- CSettingString(const std::string &id, const CSettingString &setting);
- CSettingString(const std::string &id, int label, const std::string &value, CSettingsManager *settingsManager = NULL);
- virtual ~CSettingString() { }
-
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- virtual int GetType() const { return SettingTypeString; }
- virtual bool FromString(const std::string &value) { return SetValue(value); }
- virtual std::string ToString() const { return m_value; }
- virtual bool Equals(const std::string &value) const { return m_value == value; }
- virtual bool CheckValidity(const std::string &value) const;
- virtual void Reset() { SetValue(m_default); }
-
- virtual const std::string& GetValue() const { CSharedLock lock(m_critical); return m_value; }
- virtual bool SetValue(const std::string &value);
- virtual const std::string& GetDefault() const { return m_default; }
- virtual void SetDefault(const std::string &value);
-
- virtual bool AllowEmpty() const { return m_allowEmpty; }
-
- SettingOptionsType GetOptionsType() const;
- const std::string& GetOptionsFiller() const { return m_optionsFiller; }
- DynamicStringSettingOptions UpdateDynamicOptions();
-
-protected:
- virtual void copy(const CSettingString &setting);
-
- std::string m_value;
- std::string m_default;
- bool m_allowEmpty;
- std::string m_optionsFiller;
- DynamicStringSettingOptions m_dynamicOptions;
-};
-
-/*!
- \ingroup settings
- \brief Action setting implementation.
-
- A setting action will trigger a call to the OnSettingAction() callback method
- when activated.
-
- \sa CSetting
- */
-class CSettingAction : public CSetting
-{
-public:
- CSettingAction(const std::string &id, CSettingsManager *settingsManager = NULL);
- CSettingAction(const std::string &id, const CSettingAction &setting);
- virtual ~CSettingAction() { }
-
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- virtual int GetType() const { return SettingTypeAction; }
- virtual bool FromString(const std::string &value) { return false; }
- virtual std::string ToString() const { return ""; }
- virtual bool Equals(const std::string &value) const { return false; }
- virtual bool CheckValidity(const std::string &value) const { return false; }
- virtual void Reset() { }
-
- // this needs to be public so it can be triggered when activated
- // by the user in the GUI.
- virtual void OnSettingAction(const CSetting *setting) { return CSetting::OnSettingAction(this); }
-};
#include "SettingAddon.h"
#include "addons/Addon.h"
-#include "settings/SettingsManager.h"
+#include "settings/lib/SettingsManager.h"
#include "utils/log.h"
#include "utils/XBMCTinyXML.h"
#include "utils/XMLUtils.h"
copy(setting);
}
+CSetting* CSettingAddon::Clone(const std::string &id) const
+{
+ return new CSettingAddon(id, *this);
+}
+
bool CSettingAddon::Deserialize(const TiXmlNode *node, bool update /* = false */)
{
CExclusiveLock lock(m_critical);
*
*/
-#include "Setting.h"
+#include "settings/lib/Setting.h"
#include "addons/IAddon.h"
class CSettingAddon : public CSettingString
CSettingAddon(const std::string &id, const CSettingAddon &setting);
virtual ~CSettingAddon() { }
+ virtual CSetting* Clone(const std::string &id) const;
+
virtual bool Deserialize(const TiXmlNode *node, bool update = false);
ADDON::TYPE GetAddonType() const { return m_addonType; }
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "SettingCategoryAccess.h"
-#include "SettingConditions.h"
-#include "SettingsManager.h"
-#include "utils/log.h"
-
-bool CSettingCategoryAccessCondition::Check() const
-{
- if (m_value.empty())
- return true;
-
- if (m_settingsManager == NULL)
- return false;
-
- bool found = m_settingsManager->GetConditions().Check(m_value, "true");
- if (m_negated)
- return !found;
-
- return found;
-}
-
-bool CSettingCategoryAccessConditionCombination::Check() const
-{
- if (m_operations.empty() && m_values.empty())
- return true;
-
- return CSettingConditionCombination::Check();
-}
-
-CSettingCategoryAccess::CSettingCategoryAccess(CSettingsManager *settingsManager /* = NULL */)
- : CSettingCondition(settingsManager)
-{
- m_operation = CBooleanLogicOperationPtr(new CSettingCategoryAccessConditionCombination(m_settingsManager));
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <set>
-#include <string>
-
-#include "SettingConditions.h"
-
-class CSettingCategoryAccessCondition : public CSettingConditionItem
-{
-public:
- CSettingCategoryAccessCondition(CSettingsManager *settingsManager = NULL)
- : CSettingConditionItem(settingsManager)
- { }
- virtual ~CSettingCategoryAccessCondition() { }
-
- virtual bool Check() const;
-};
-
-class CSettingCategoryAccessConditionCombination : public CSettingConditionCombination
-{
-public:
- CSettingCategoryAccessConditionCombination(CSettingsManager *settingsManager = NULL)
- : CSettingConditionCombination(settingsManager)
- { }
- virtual ~CSettingCategoryAccessConditionCombination() { }
-
- virtual bool Check() const;
-
-private:
- virtual CBooleanLogicOperation* newOperation() { return new CSettingCategoryAccessConditionCombination(m_settingsManager); }
- virtual CBooleanLogicValue* newValue() { return new CSettingCategoryAccessCondition(m_settingsManager); }
-};
-
-class CSettingCategoryAccess : public CSettingCondition
-{
-public:
- CSettingCategoryAccess(CSettingsManager *settingsManager = NULL);
- virtual ~CSettingCategoryAccess() { }
-};
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "SettingConditions.h"
-#include "SettingDefinitions.h"
-#include "SettingsManager.h"
-#include "utils/StringUtils.h"
-#include "utils/XBMCTinyXML.h"
-
-bool CSettingConditionItem::Deserialize(const TiXmlNode *node)
-{
- if (!CBooleanLogicValue::Deserialize(node))
- return false;
-
- const TiXmlElement *elem = node->ToElement();
- if (elem == NULL)
- return false;
-
- // get the "name" attribute
- const char *strAttribute = elem->Attribute(SETTING_XML_ATTR_NAME);
- if (strAttribute != NULL)
- m_name = strAttribute;
-
- // get the "setting" attribute
- strAttribute = elem->Attribute(SETTING_XML_ATTR_SETTING);
- if (strAttribute != NULL)
- m_setting = strAttribute;
-
- return true;
-}
-
-bool CSettingConditionItem::Check() const
-{
- if (m_settingsManager == NULL)
- return false;
-
- return m_settingsManager->GetConditions().Check(m_name, m_value, m_setting) == !m_negated;
-}
-
-bool CSettingConditionCombination::Check() const
-{
- bool ok = false;
- for (CBooleanLogicOperations::const_iterator operation = m_operations.begin();
- operation != m_operations.end(); ++operation)
- {
- if (*operation == NULL)
- continue;
-
- CSettingConditionCombination *combination = static_cast<CSettingConditionCombination*>((*operation).get());
- if (combination == NULL)
- continue;
-
- if (combination->Check())
- ok = true;
- else if (m_operation == BooleanLogicOperationAnd)
- return false;
- }
-
- for (CBooleanLogicValues::const_iterator value = m_values.begin();
- value != m_values.end(); ++value)
- {
- if (*value == NULL)
- continue;
-
- CSettingConditionItem *condition = static_cast<CSettingConditionItem*>((*value).get());
- if (condition == NULL)
- continue;
-
- if (condition->Check())
- ok = true;
- else if (m_operation == BooleanLogicOperationAnd)
- return false;
- }
-
- return ok;
-}
-
-CSettingCondition::CSettingCondition(CSettingsManager *settingsManager /* = NULL */)
- : ISettingCondition(settingsManager)
-{
- m_operation = CBooleanLogicOperationPtr(new CSettingConditionCombination(settingsManager));
-}
-
-bool CSettingCondition::Check() const
-{
- CSettingConditionCombination *combination = static_cast<CSettingConditionCombination*>(m_operation.get());
- if (combination == NULL)
- return false;
-
- return combination->Check();
-}
-
-void CSettingConditionsManager::AddCondition(const std::string &condition)
-{
- if (condition.empty())
- return;
-
- m_defines.insert(condition);
-}
-
-void CSettingConditionsManager::AddCondition(const std::string &identifier, SettingConditionCheck condition)
-{
- if (identifier.empty() || condition == NULL)
- return;
-
- m_conditions.insert(SettingConditionPair(identifier, condition));
-}
-
-bool CSettingConditionsManager::Check(const std::string &condition, const std::string &value /* = "" */, const std::string &settingId /* = "" */) const
-{
- if (condition.empty())
- return false;
-
- std::string tmpCondition = condition;
- StringUtils::ToLower(tmpCondition);
-
- // special handling of "isdefined" conditions
- if (tmpCondition == "isdefined")
- {
- std::string tmpValue = value;
- StringUtils::ToLower(tmpValue);
-
- return m_defines.find(tmpValue) != m_defines.end();
- }
-
- SettingConditionMap::const_iterator conditionIt = m_conditions.find(tmpCondition);
- if (conditionIt == m_conditions.end())
- return false;
-
- return conditionIt->second(tmpCondition, value, settingId);
-}
-
-CSettingConditionsManager::CSettingConditionsManager()
-{ }
-
-CSettingConditionsManager::~CSettingConditionsManager()
-{
- m_conditions.clear();
- m_defines.clear();
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <map>
-#include <set>
-#include <string>
-
-#include "SettingDefinitions.h"
-#include "utils/BooleanLogic.h"
-
-class CSettingsManager;
-
-typedef bool (*SettingConditionCheck)(const std::string &condition, const std::string &value, const std::string &settingId);
-
-class ISettingCondition
-{
-public:
- ISettingCondition(CSettingsManager *settingsManager)
- : m_settingsManager(settingsManager)
- { }
- virtual ~ISettingCondition() { }
-
- virtual bool Check() const = 0;
-
-protected:
- CSettingsManager *m_settingsManager;
-};
-
-class CSettingConditionItem : public CBooleanLogicValue, public ISettingCondition
-{
-public:
- CSettingConditionItem(CSettingsManager *settingsManager = NULL)
- : ISettingCondition(settingsManager)
- { }
- virtual ~CSettingConditionItem() { }
-
- virtual bool Deserialize(const TiXmlNode *node);
- virtual const char* GetTag() const { return SETTING_XML_ELM_CONDITION; }
- virtual bool Check() const;
-
-protected:
- std::string m_name;
- std::string m_setting;
-};
-
-class CSettingConditionCombination : public CBooleanLogicOperation, public ISettingCondition
-{
-public:
- CSettingConditionCombination(CSettingsManager *settingsManager = NULL)
- : ISettingCondition(settingsManager)
- { }
- virtual ~CSettingConditionCombination() { }
-
- virtual bool Check() const;
-
-private:
- virtual CBooleanLogicOperation* newOperation() { return new CSettingConditionCombination(m_settingsManager); }
- virtual CBooleanLogicValue* newValue() { return new CSettingConditionItem(m_settingsManager); }
-};
-
-class CSettingCondition : public CBooleanLogic, public ISettingCondition
-{
-public:
- CSettingCondition(CSettingsManager *settingsManager = NULL);
- virtual ~CSettingCondition() { }
-
- virtual bool Check() const;
-};
-
-class CSettingConditionsManager
-{
-public:
- CSettingConditionsManager();
- virtual ~CSettingConditionsManager();
-
- void AddCondition(const std::string &condition);
- void AddCondition(const std::string &identifier, SettingConditionCheck condition);
-
- bool Check(const std::string &condition, const std::string &value = "", const std::string &settingId = "") const;
-
-private:
- CSettingConditionsManager(const CSettingConditionsManager&);
- CSettingConditionsManager const& operator=(CSettingConditionsManager const&);
-
- typedef std::pair<std::string, SettingConditionCheck> SettingConditionPair;
- typedef std::map<std::string, SettingConditionCheck> SettingConditionMap;
-
- SettingConditionMap m_conditions;
- std::set<std::string> m_defines;
-};
#include <vector>
#include "SettingControl.h"
-#include "settings/SettingDefinitions.h"
+#include "settings/lib/SettingDefinitions.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
#include "utils/XBMCTinyXML.h"
return false;
XMLUtils::GetInt(node, SETTING_XML_ELM_CONTROL_HEADING, m_heading);
+ XMLUtils::GetBoolean(node, SETTING_XML_ELM_CONTROL_MULTISELECT, m_multiselect);
return true;
}
*
*/
-#include "ISettingControl.h"
+#include "settings/lib/ISettingControl.h"
#define SETTING_XML_ELM_CONTROL_FORMATLABEL "formatlabel"
#define SETTING_XML_ELM_CONTROL_HIDDEN "hidden"
#define SETTING_XML_ELM_CONTROL_VERIFYNEW "verifynew"
#define SETTING_XML_ELM_CONTROL_HEADING "heading"
#define SETTING_XML_ELM_CONTROL_HIDEVALUE "hidevalue"
+#define SETTING_XML_ELM_CONTROL_MULTISELECT "multiselect"
class CSettingControlCheckmark : public ISettingControl
{
{
public:
CSettingControlList()
- : m_heading(-1)
+ : m_heading(-1),
+ m_multiselect(false)
{ }
virtual ~CSettingControlList() { }
virtual bool Deserialize(const TiXmlNode *node, bool update = false);
int GetHeading() const { return m_heading; }
+ bool CanMultiSelect() const { return m_multiselect; }
protected:
virtual bool SetFormat(const std::string &format);
int m_heading;
+ bool m_multiselect;
};
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#define SETTING_XML_ROOT "settings"
-
-#define SETTING_XML_ELM_SECTION "section"
-#define SETTING_XML_ELM_CATEGORY "category"
-#define SETTING_XML_ELM_GROUP "group"
-#define SETTING_XML_ELM_SETTING "setting"
-#define SETTING_XML_ELM_VISIBLE "visible"
-#define SETTING_XML_ELM_REQUIREMENT "requirement"
-#define SETTING_XML_ELM_CONDITION "condition"
-#define SETTING_XML_ELM_LEVEL "level"
-#define SETTING_XML_ELM_DEFAULT "default"
-#define SETTING_XML_ELM_VALUE "value"
-#define SETTING_XML_ELM_CONTROL "control"
-#define SETTING_XML_ELM_CONSTRAINTS "constraints"
-#define SETTING_XML_ELM_OPTIONS "options"
-#define SETTING_XML_ELM_OPTION "option"
-#define SETTING_XML_ELM_MINIMUM "minimum"
-#define SETTING_XML_ELM_STEP "step"
-#define SETTING_XML_ELM_MAXIMUM "maximum"
-#define SETTING_XML_ELM_ALLOWEMPTY "allowempty"
-#define SETTING_XML_ELM_DEPENDENCIES "dependencies"
-#define SETTING_XML_ELM_DEPENDENCY "dependency"
-#define SETTING_XML_ELM_UPDATES "updates"
-#define SETTING_XML_ELM_UPDATE "update"
-#define SETTING_XML_ELM_ACCESS "access"
-
-#define SETTING_XML_ATTR_ID "id"
-#define SETTING_XML_ATTR_LABEL "label"
-#define SETTING_XML_ATTR_HELP "help"
-#define SETTING_XML_ATTR_TYPE "type"
-#define SETTING_XML_ATTR_PARENT "parent"
-#define SETTING_XML_ATTR_FORMAT "format"
-#define SETTING_XML_ATTR_DELAYED "delayed"
-#define SETTING_XML_ATTR_ON "on"
-#define SETTING_XML_ATTR_OPERATOR "operator"
-#define SETTING_XML_ATTR_NAME "name"
-#define SETTING_XML_ATTR_SETTING "setting"
-#define SETTING_XML_ATTR_BEFORE "before"
-#define SETTING_XML_ATTR_AFTER "after"
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <stdlib.h>
-
-#include "SettingDependency.h"
-#include "Setting.h"
-#include "SettingDefinitions.h"
-#include "SettingsManager.h"
-#include "utils/log.h"
-#include "utils/StringUtils.h"
-#include "utils/XBMCTinyXML.h"
-
-bool CSettingDependencyCondition::Deserialize(const TiXmlNode *node)
-{
- if (!CSettingConditionItem::Deserialize(node))
- return false;
-
- const TiXmlElement *elem = node->ToElement();
- if (elem == NULL)
- return false;
-
- m_target = SettingDependencyTargetSetting;
- const char *strTarget = elem->Attribute(SETTING_XML_ATTR_ON);
- if (strTarget != NULL && !setTarget(strTarget))
- {
- CLog::Log(LOGWARNING, "CSettingDependencyCondition: unknown target \"%s\"", strTarget);
- return false;
- }
-
- if (m_target != SettingDependencyTargetSetting && m_name.empty())
- {
- CLog::Log(LOGWARNING, "CSettingDependencyCondition: missing name for dependency");
- return false;
- }
-
- if (m_target == SettingDependencyTargetSetting)
- {
- if (m_setting.empty())
- {
- CLog::Log(LOGWARNING, "CSettingDependencyCondition: missing setting for dependency");
- return false;
- }
-
- m_name = m_setting;
- }
-
- m_operator = SettingDependencyOperatorEquals;
- const char *strOperator = elem->Attribute(SETTING_XML_ATTR_OPERATOR);
- if (strOperator != NULL && !setOperator(strOperator))
- {
- CLog::Log(LOGWARNING, "CSettingDependencyCondition: unknown operator \"%s\"", strOperator);
- return false;
- }
-
- return true;
-}
-
-bool CSettingDependencyCondition::Check() const
-{
- if (m_name.empty() ||
- m_target == SettingDependencyTargetNone ||
- m_operator == SettingDependencyOperatorNone ||
- m_settingsManager == NULL)
- return false;
-
- bool result = false;
- switch (m_target)
- {
- case SettingDependencyTargetSetting:
- {
- if (m_setting.empty())
- return false;
-
- const CSetting *setting = m_settingsManager->GetSetting(m_setting);
- if (setting == NULL)
- {
- CLog::Log(LOGWARNING, "CSettingDependencyCondition: unable to check condition on unknown setting \"%s\"", m_setting.c_str());
- return false;
- }
-
- if (m_operator == SettingDependencyOperatorEquals)
- result = setting->Equals(m_value);
- else if (m_operator == SettingDependencyOperatorContains)
- result = (setting->ToString().find(m_value) != std::string::npos);
-
- break;
- }
-
- case SettingDependencyTargetProperty:
- {
- result = m_settingsManager->GetConditions().Check(m_name, m_value, m_setting);
- break;
- }
-
- default:
- return false;
- }
-
- return result == !m_negated;
-}
-
-bool CSettingDependencyCondition::setTarget(const std::string &target)
-{
- if (StringUtils::EqualsNoCase(target, "setting"))
- m_target = SettingDependencyTargetSetting;
- else if (StringUtils::EqualsNoCase(target, "property"))
- m_target = SettingDependencyTargetProperty;
- else
- return false;
-
- return true;
-}
-
-bool CSettingDependencyCondition::setOperator(const std::string &op)
-{
- size_t length = 0;
- if (StringUtils::EndsWithNoCase(op, "is"))
- {
- m_operator = SettingDependencyOperatorEquals;
- length = 2;
- }
- else if (StringUtils::EndsWithNoCase(op, "contains"))
- {
- m_operator = SettingDependencyOperatorContains;
- length = 8;
- }
-
- if (op.size() > length + 1)
- return false;
- if (op.size() == length + 1)
- {
- if (!StringUtils::StartsWith(op, "!"))
- return false;
- m_negated = true;
- }
-
- return true;
-}
-
-bool CSettingDependencyConditionCombination::Deserialize(const TiXmlNode *node)
-{
- if (node == NULL)
- return false;
-
- size_t numOperations = m_operations.size();
- size_t numValues = m_values.size();
-
- if (!CSettingConditionCombination::Deserialize(node))
- return false;
-
- if (numOperations < m_operations.size())
- {
- for (size_t i = numOperations; i < m_operations.size(); i++)
- {
- if (m_operations[i] == NULL)
- continue;
-
- CSettingDependencyConditionCombination *combination = static_cast<CSettingDependencyConditionCombination*>(m_operations[i].get());
- if (combination == NULL)
- continue;
-
- const std::set<std::string>& settings = combination->GetSettings();
- m_settings.insert(settings.begin(), settings.end());
- }
- }
-
- if (numValues < m_values.size())
- {
- for (size_t i = numValues; i < m_values.size(); i++)
- {
- if (m_values[i] == NULL)
- continue;
-
- CSettingDependencyCondition *condition = static_cast<CSettingDependencyCondition*>(m_values[i].get());
- if (condition == NULL)
- continue;
-
- std::string settingId = condition->GetSetting();
- if (!settingId.empty())
- m_settings.insert(settingId);
- }
- }
-
- return true;
-}
-
-CSettingDependency::CSettingDependency(CSettingsManager *settingsManager /* = NULL */)
- : CSettingCondition(settingsManager),
- m_type(SettingDependencyTypeNone)
-{
- m_operation = CBooleanLogicOperationPtr(new CSettingDependencyConditionCombination(m_settingsManager));
-}
-
-bool CSettingDependency::Deserialize(const TiXmlNode *node)
-{
- if (node == NULL)
- return false;
-
- const TiXmlElement *elem = node->ToElement();
- if (elem == NULL)
- return false;
-
- const char *strType = elem->Attribute(SETTING_XML_ATTR_TYPE);
- if (strType == NULL || strlen(strType) <= 0 || !setType(strType))
- {
- CLog::Log(LOGWARNING, "CSettingDependency: missing or unknown dependency type definition");
- return false;
- }
-
- return CSettingCondition::Deserialize(node);
-}
-
-std::set<std::string> CSettingDependency::GetSettings() const
-{
- if (m_operation == NULL)
- return std::set<std::string>();
-
- CSettingDependencyConditionCombination *combination = static_cast<CSettingDependencyConditionCombination*>(m_operation.get());
- if (combination == NULL)
- return std::set<std::string>();
-
- return combination->GetSettings();
-}
-
-bool CSettingDependency::setType(const std::string &type)
-{
- if (StringUtils::EqualsNoCase(type, "enable"))
- m_type = SettingDependencyTypeEnable;
- else if (StringUtils::EqualsNoCase(type, "update"))
- m_type = SettingDependencyTypeUpdate;
- else if (StringUtils::EqualsNoCase(type, "visible"))
- m_type = SettingDependencyTypeVisible;
- else
- return false;
-
- return true;
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <list>
-#include <set>
-#include <string>
-
-#include "SettingConditions.h"
-#include "utils/BooleanLogic.h"
-
-typedef enum {
- SettingDependencyTypeNone = 0,
- SettingDependencyTypeEnable,
- SettingDependencyTypeUpdate,
- SettingDependencyTypeVisible
-} SettingDependencyType;
-
-typedef enum {
- SettingDependencyOperatorNone = 0,
- SettingDependencyOperatorEquals,
- SettingDependencyOperatorContains
-} SettingDependencyOperator;
-
-typedef enum {
- SettingDependencyTargetNone = 0,
- SettingDependencyTargetSetting,
- SettingDependencyTargetProperty
-} SettingDependencyTarget;
-
-class CSettingDependencyCondition : public CSettingConditionItem
-{
-public:
- CSettingDependencyCondition(CSettingsManager *settingsManager = NULL)
- : CSettingConditionItem(settingsManager),
- m_target(SettingDependencyTargetNone),
- m_operator(SettingDependencyOperatorEquals)
- { }
- virtual ~CSettingDependencyCondition() { }
-
- virtual bool Deserialize(const TiXmlNode *node);
- virtual bool Check() const;
-
- const std::string& GetName() const { return m_name; }
- const std::string& GetSetting() const { return m_setting; }
- const SettingDependencyTarget GetTarget() const { return m_target; }
- const SettingDependencyOperator GetOperator() const { return m_operator; }
-
-private:
- bool setTarget(const std::string &target);
- bool setOperator(const std::string &op);
-
- SettingDependencyTarget m_target;
- SettingDependencyOperator m_operator;
-};
-
-class CSettingDependencyConditionCombination : public CSettingConditionCombination
-{
-public:
- CSettingDependencyConditionCombination(CSettingsManager *settingsManager = NULL)
- : CSettingConditionCombination(settingsManager)
- { }
- virtual ~CSettingDependencyConditionCombination() { }
-
- virtual bool Deserialize(const TiXmlNode *node);
-
- const std::set<std::string>& GetSettings() const { return m_settings; }
-
-private:
- virtual CBooleanLogicOperation* newOperation() { return new CSettingDependencyConditionCombination(m_settingsManager); }
- virtual CBooleanLogicValue* newValue() { return new CSettingDependencyCondition(m_settingsManager); }
-
- std::set<std::string> m_settings;
-};
-
-class CSettingDependency : public CSettingCondition
-{
-public:
- CSettingDependency(CSettingsManager *settingsManager = NULL);
- virtual ~CSettingDependency() { }
-
- virtual bool Deserialize(const TiXmlNode *node);
-
- SettingDependencyType GetType() const { return m_type; }
- std::set<std::string> GetSettings() const;
-
-private:
- bool setType(const std::string &type);
-
- SettingDependencyType m_type;
-};
-
-typedef std::list<CSettingDependency> SettingDependencies;
-typedef std::map<std::string, SettingDependencies> SettingDependencyMap;
*/
#include "SettingPath.h"
-#include "settings/SettingsManager.h"
+#include "settings/lib/SettingsManager.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
#include "utils/XBMCTinyXML.h"
copy(setting);
}
+CSetting* CSettingPath::Clone(const std::string &id) const
+{
+ return new CSettingPath(id, *this);
+}
+
bool CSettingPath::Deserialize(const TiXmlNode *node, bool update /* = false */)
{
CExclusiveLock lock(m_critical);
#include <vector>
-#include "Setting.h"
+#include "settings/lib/Setting.h"
class CSettingPath : public CSettingString
{
CSettingPath(const std::string &id, const CSettingPath &setting);
virtual ~CSettingPath() { }
+ virtual CSetting* Clone(const std::string &id) const;
+
virtual bool Deserialize(const TiXmlNode *node, bool update = false);
virtual bool SetValue(const std::string &value);
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "SettingRequirement.h"
-#include "SettingsManager.h"
-
-bool CSettingRequirementCondition::Check() const
-{
- if (m_settingsManager == NULL)
- return false;
-
- bool found = m_settingsManager->GetConditions().Check("IsDefined", m_value);
- if (m_negated)
- return !found;
-
- return found;
-}
-
-bool CSettingRequirementConditionCombination::Check() const
-{
- if (m_operations.empty() && m_values.empty())
- return true;
-
- return CSettingConditionCombination::Check();
-}
-
-CSettingRequirement::CSettingRequirement(CSettingsManager *settingsManager /* = NULL */)
- : CSettingCondition(settingsManager)
-{
- m_operation = CBooleanLogicOperationPtr(new CSettingRequirementConditionCombination(m_settingsManager));
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <set>
-#include <string>
-
-#include "SettingConditions.h"
-
-class CSettingRequirementCondition : public CSettingConditionItem
-{
-public:
- CSettingRequirementCondition(CSettingsManager *settingsManager = NULL)
- : CSettingConditionItem(settingsManager)
- { }
- virtual ~CSettingRequirementCondition() { }
-
- virtual bool Check() const;
-};
-
-class CSettingRequirementConditionCombination : public CSettingConditionCombination
-{
-public:
- CSettingRequirementConditionCombination(CSettingsManager *settingsManager = NULL)
- : CSettingConditionCombination(settingsManager)
- { }
- virtual ~CSettingRequirementConditionCombination() { }
-
- virtual bool Check() const;
-
-private:
- virtual CBooleanLogicOperation* newOperation() { return new CSettingRequirementConditionCombination(m_settingsManager); }
- virtual CBooleanLogicValue* newValue() { return new CSettingRequirementCondition(m_settingsManager); }
-};
-
-class CSettingRequirement : public CSettingCondition
-{
-public:
- CSettingRequirement(CSettingsManager *settingsManager = NULL);
- virtual ~CSettingRequirement() { }
-};
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "SettingSection.h"
-#include "SettingDefinitions.h"
-#include "SettingsManager.h"
-#include "utils/log.h"
-#include "utils/StringUtils.h"
-#include "utils/XBMCTinyXML.h"
-
-template<class T> void addISetting(const TiXmlNode *node, const T &item, std::vector<T> &items)
-{
- if (node == NULL)
- return;
-
- const TiXmlElement *element = node->ToElement();
- if (element == NULL)
- return;
-
- // check if there is a "before" or "after" attribute to place the setting at a specific position
- int position = -1; // -1 => end, 0 => before, 1 => after
- const char *positionId = element->Attribute(SETTING_XML_ATTR_BEFORE);
- if (positionId != NULL && strlen(positionId) > 0)
- position = 0;
- else if ((positionId = element->Attribute(SETTING_XML_ATTR_AFTER)) != NULL && strlen(positionId) > 0)
- position = 1;
-
- if (positionId != NULL && strlen(positionId) > 0 && position >= 0)
- {
- for (typename std::vector<T>::iterator it = items.begin(); it != items.end(); ++it)
- {
- if (!StringUtils::EqualsNoCase((*it)->GetId(), positionId))
- continue;
-
- typename std::vector<T>::iterator positionIt = it;
- if (position == 1)
- ++positionIt;
-
- items.insert(positionIt, item);
- return;
- }
- }
-
- items.push_back(item);
-}
-
-CSettingGroup::CSettingGroup(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : ISetting(id, settingsManager)
-{ }
-
-CSettingGroup::~CSettingGroup()
-{
- for (SettingList::const_iterator setting = m_settings.begin(); setting != m_settings.end(); ++setting)
- delete *setting;
- m_settings.clear();
-}
-
-bool CSettingGroup::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- // handle <visible> conditions
- if (!ISetting::Deserialize(node, update))
- return false;
-
- const TiXmlElement *settingElement = node->FirstChildElement(SETTING_XML_ELM_SETTING);
- while (settingElement != NULL)
- {
- std::string settingId;
- if (CSettingCategory::DeserializeIdentification(settingElement, settingId))
- {
- CSetting *setting = NULL;
- for (SettingList::iterator itSetting = m_settings.begin(); itSetting != m_settings.end(); ++itSetting)
- {
- if ((*itSetting)->GetId() == settingId)
- {
- setting = *itSetting;
- break;
- }
- }
-
- update = (setting != NULL);
- if (!update)
- {
- const char* settingType = settingElement->Attribute(SETTING_XML_ATTR_TYPE);
- if (settingType == NULL || strlen(settingType) <= 0)
- {
- CLog::Log(LOGERROR, "CSettingGroup: unable to read setting type of \"%s\"", settingId.c_str());
- return false;
- }
-
- setting = m_settingsManager->CreateSetting(settingType, settingId, m_settingsManager);
- if (setting == NULL)
- CLog::Log(LOGERROR, "CSettingGroup: unknown setting type \"%s\" of \"%s\"", settingType, settingId.c_str());
- }
-
- if (setting == NULL)
- CLog::Log(LOGERROR, "CSettingGroup: unable to create new setting \"%s\"", settingId.c_str());
- else if (!setting->Deserialize(settingElement, update))
- {
- CLog::Log(LOGWARNING, "CSettingGroup: unable to read setting \"%s\"", settingId.c_str());
- if (!update)
- delete setting;
- }
- else if (!update)
- addISetting(settingElement, setting, m_settings);
- }
-
- settingElement = settingElement->NextSiblingElement(SETTING_XML_ELM_SETTING);
- }
-
- return true;
-}
-
-SettingList CSettingGroup::GetSettings(SettingLevel level) const
-{
- SettingList settings;
-
- for (SettingList::const_iterator it = m_settings.begin(); it != m_settings.end(); ++it)
- {
- if ((*it)->GetLevel() <= level && (*it)->MeetsRequirements())
- settings.push_back(*it);
- }
-
- return settings;
-}
-
-CSettingCategory::CSettingCategory(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : ISetting(id, settingsManager),
- m_label(-1), m_help(-1),
- m_accessCondition(settingsManager)
-{ }
-
-CSettingCategory::~CSettingCategory()
-{
- for (SettingGroupList::const_iterator it = m_groups.begin(); it != m_groups.end(); ++it)
- delete *it;
-
- m_groups.clear();
-}
-
-bool CSettingCategory::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- // handle <visible> conditions
- if (!ISetting::Deserialize(node, update))
- return false;
-
- const TiXmlElement *element = node->ToElement();
- if (element == NULL)
- return false;
-
- int tmp = -1;
- if (element->QueryIntAttribute(SETTING_XML_ATTR_LABEL, &tmp) == TIXML_SUCCESS && tmp > 0)
- m_label = tmp;
- if (element->QueryIntAttribute(SETTING_XML_ATTR_HELP, &tmp) == TIXML_SUCCESS && tmp > 0)
- m_help = tmp;
-
- const TiXmlNode *accessNode = node->FirstChild(SETTING_XML_ELM_ACCESS);
- if (accessNode != NULL && !m_accessCondition.Deserialize(accessNode))
- return false;
-
- const TiXmlNode *groupNode = node->FirstChildElement(SETTING_XML_ELM_GROUP);
- while (groupNode != NULL)
- {
- std::string groupId;
- if (CSettingGroup::DeserializeIdentification(groupNode, groupId))
- {
- CSettingGroup *group = NULL;
- for (SettingGroupList::iterator itGroup = m_groups.begin(); itGroup != m_groups.end(); ++itGroup)
- {
- if ((*itGroup)->GetId() == groupId)
- {
- group = *itGroup;
- break;
- }
- }
-
- update = (group != NULL);
- if (!update)
- group = new CSettingGroup(groupId, m_settingsManager);
-
- if (group->Deserialize(groupNode, update))
- {
- if (!update)
- addISetting(groupNode, group, m_groups);
- }
- else
- {
- CLog::Log(LOGWARNING, "CSettingCategory: unable to read group \"%s\"", groupId.c_str());
- if (!update)
- delete group;
- }
- }
-
- groupNode = groupNode->NextSibling(SETTING_XML_ELM_GROUP);
- }
-
- return true;
-}
-
-SettingGroupList CSettingCategory::GetGroups(SettingLevel level) const
-{
- SettingGroupList groups;
-
- for (SettingGroupList::const_iterator it = m_groups.begin(); it != m_groups.end(); ++it)
- {
- if ((*it)->MeetsRequirements() && (*it)->IsVisible() && (*it)->GetSettings(level).size() > 0)
- groups.push_back(*it);
- }
-
- return groups;
-}
-
-bool CSettingCategory::CanAccess() const
-{
- return m_accessCondition.Check();
-}
-
-CSettingSection::CSettingSection(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
- : ISetting(id, settingsManager),
- m_label(-1), m_help(-1)
-{ }
-
-CSettingSection::~CSettingSection()
-{
- for (SettingCategoryList::const_iterator it = m_categories.begin(); it != m_categories.end(); ++it)
- delete *it;
-
- m_categories.clear();
-}
-
-bool CSettingSection::Deserialize(const TiXmlNode *node, bool update /* = false */)
-{
- // handle <visible> conditions
- if (!ISetting::Deserialize(node, update))
- return false;
-
- const TiXmlElement *element = node->ToElement();
- if (element == NULL)
- return false;
-
- int tmp = -1;
- if (element->QueryIntAttribute(SETTING_XML_ATTR_LABEL, &tmp) == TIXML_SUCCESS && tmp > 0)
- m_label = tmp;
- if (element->QueryIntAttribute(SETTING_XML_ATTR_HELP, &tmp) == TIXML_SUCCESS && tmp > 0)
- m_help = tmp;
-
- const TiXmlNode *categoryNode = node->FirstChild(SETTING_XML_ELM_CATEGORY);
- while (categoryNode != NULL)
- {
- std::string categoryId;
- if (CSettingCategory::DeserializeIdentification(categoryNode, categoryId))
- {
- CSettingCategory *category = NULL;
- for (SettingCategoryList::iterator itCategory = m_categories.begin(); itCategory != m_categories.end(); ++itCategory)
- {
- if ((*itCategory)->GetId() == categoryId)
- {
- category = *itCategory;
- break;
- }
- }
-
- update = (category != NULL);
- if (!update)
- category = new CSettingCategory(categoryId, m_settingsManager);
-
- if (category->Deserialize(categoryNode, update))
- {
- if (!update)
- addISetting(categoryNode, category, m_categories);
- }
- else
- {
- CLog::Log(LOGWARNING, "CSettingSection: unable to read category \"%s\"", categoryId.c_str());
- if (!update)
- delete category;
- }
- }
-
- categoryNode = categoryNode->NextSibling(SETTING_XML_ELM_CATEGORY);
- }
-
- return true;
-}
-
-SettingCategoryList CSettingSection::GetCategories(SettingLevel level) const
-{
- SettingCategoryList categories;
-
- for (SettingCategoryList::const_iterator it = m_categories.begin(); it != m_categories.end(); ++it)
- {
- if ((*it)->MeetsRequirements() && (*it)->IsVisible() && (*it)->GetGroups(level).size() > 0)
- categories.push_back(*it);
- }
-
- return categories;
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <string>
-#include <vector>
-
-#include "ISetting.h"
-#include "Setting.h"
-#include "SettingCategoryAccess.h"
-
-class CSettingsManager;
-
-/*!
- \ingroup settings
- \brief Group of settings being part of a category
- \sa CSettingCategory
- \sa CSetting
- */
-class CSettingGroup : public ISetting
-{
-public:
- /*!
- \brief Creates a new setting group with the given identifier.
-
- \param id Identifier of the setting group
- \param settingsManager Reference to the settings manager
- */
- CSettingGroup(const std::string &id, CSettingsManager *settingsManager = NULL);
- ~CSettingGroup();
-
- // implementation of ISetting
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- /*!
- \brief Gets the full list of settings belonging to the setting group.
-
- \return Full list of settings belonging to the setting group
- */
- const SettingList& GetSettings() const { return m_settings; }
- /*!
- \brief Gets the list of settings assigned to the given setting level (or
- below) and that meet the requirements conditions belonging to the setting
- group.
-
- \param level Level the settings should be assigned to
- \return List of settings belonging to the setting group
- */
- SettingList GetSettings(SettingLevel level) const;
-
-private:
- SettingList m_settings;
-};
-
-typedef std::vector<CSettingGroup *> SettingGroupList;
-
-/*!
- \ingroup settings
- \brief Category of groups of settings being part of a section
- \sa CSettingSection
- \sa CSettingGroup
- */
-class CSettingCategory : public ISetting
-{
-public:
- /*!
- \brief Creates a new setting category with the given identifier.
-
- \param id Identifier of the setting category
- \param settingsManager Reference to the settings manager
- */
- CSettingCategory(const std::string &id, CSettingsManager *settingsManager = NULL);
- ~CSettingCategory();
-
- // implementation of ISetting
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- /*!
- \brief Gets the localizeable label ID of the setting category.
-
- \return Localizeable label ID of the setting category
- */
- const int GetLabel() const { return m_label; }
- /*!
- \brief Sets the localizeable label ID of the setting category.
-
- \param label Localizeable label ID of the setting category
- */
- void SetLabel(int label) { m_label = label; }
- /*!
- \brief Gets the localizeable help ID of the setting category.
-
- \return Localizeable help ID of the setting category
- */
- const int GetHelp() const { return m_help; }
- /*!
- \brief Sets the localizeable help ID of the setting category.
-
- \param label Localizeable help ID of the setting category
- */
- void SetHelp(int help) { m_help = help; }
- /*!
- \brief Gets the full list of setting groups belonging to the setting
- category.
-
- \return Full list of setting groups belonging to the setting category
- */
- const SettingGroupList& GetGroups() const { return m_groups; }
- /*!
- \brief Gets the list of setting groups belonging to the setting category
- that contain settings assigned to the given setting level (or below) and
- that meet the requirements and visibility conditions.
-
- \param level Level the settings should be assigned to
- \return List of setting groups belonging to the setting category
- */
- SettingGroupList GetGroups(SettingLevel level) const;
-
- /*!
- \brief Whether the setting category can be accessed or not.
-
- \return True if the setting category can be accessed, false otherwise
- */
- bool CanAccess() const;
-
-private:
- int m_label;
- int m_help;
- SettingGroupList m_groups;
- CSettingCategoryAccess m_accessCondition;
-};
-
-typedef std::vector<CSettingCategory *> SettingCategoryList;
-
-/*!
- \ingroup settings
- \brief Section of setting categories
- \sa CSettings
- \sa CSettingCategory
- */
-class CSettingSection : public ISetting
-{
-public:
- /*!
- \brief Creates a new setting section with the given identifier.
-
- \param id Identifier of the setting section
- \param settingsManager Reference to the settings manager
- */
- CSettingSection(const std::string &id, CSettingsManager *settingsManager = NULL);
- ~CSettingSection();
-
- // implementation of ISetting
- virtual bool Deserialize(const TiXmlNode *node, bool update = false);
-
- /*!
- \brief Gets the localizeable label ID of the setting section.
-
- \return Localizeable label ID of the setting section
- */
- const int GetLabel() const { return m_label; }
- /*!
- \brief Sets the localizeable label ID of the setting section.
-
- \param label Localizeable label ID of the setting section
- */
- void SetLabel(int label) { m_label = label; }
- /*!
- \brief Gets the localizeable help ID of the setting section.
-
- \return Localizeable help ID of the setting section
- */
- const int GetHelp() const { return m_help; }
- /*!
- \brief Sets the localizeable help ID of the setting section.
-
- \param label Localizeable help ID of the setting section
- */
- void SetHelp(int help) { m_help = help; }
- /*!
- \brief Gets the full list of setting categories belonging to the setting
- section.
-
- \return Full list of setting categories belonging to the setting section
- */
- const SettingCategoryList& GetCategories() const { return m_categories; }
- /*!
- \brief Gets the list of setting categories belonging to the setting section
- that contain settings assigned to the given setting level (or below) and
- that meet the requirements and visibility conditions.
-
- \param level Level the settings should be assigned to
- \return List of setting categories belonging to the setting section
- */
- SettingCategoryList GetCategories(SettingLevel level) const;
-
-private:
- int m_label;
- int m_help;
- SettingCategoryList m_categories;
-};
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "SettingUpdate.h"
-#include "SettingDefinitions.h"
-#include "utils/log.h"
-#include "utils/StringUtils.h"
-#include "utils/XBMCTinyXML.h"
-
-CSettingUpdate::CSettingUpdate()
- : m_type(SettingUpdateTypeNone)
-{ }
-
-bool CSettingUpdate::operator<(const CSettingUpdate& rhs) const
-{
- return m_type < rhs.m_type && m_value < rhs.m_value;
-}
-
-bool CSettingUpdate::Deserialize(const TiXmlNode *node)
-{
- if (node == NULL)
- return false;
-
- const TiXmlElement *elem = node->ToElement();
- if (elem == NULL)
- return false;
-
- const char *strType = elem->Attribute(SETTING_XML_ATTR_TYPE);
- if (strType == NULL || strlen(strType) <= 0 || !setType(strType))
- {
- CLog::Log(LOGWARNING, "CSettingUpdate: missing or unknown update type definition");
- return false;
- }
-
- if (m_type == SettingUpdateTypeRename)
- {
- if (node->FirstChild() == NULL || node->FirstChild()->Type() != TiXmlNode::TINYXML_TEXT)
- {
- CLog::Log(LOGWARNING, "CSettingUpdate: missing or invalid setting id for rename update definition");
- return false;
- }
-
- m_value = node->FirstChild()->ValueStr();
- }
-
- return true;
-}
-
-bool CSettingUpdate::setType(const std::string &type)
-{
- if (StringUtils::EqualsNoCase(type, "change"))
- m_type = SettingUpdateTypeChange;
- else if (StringUtils::EqualsNoCase(type, "rename"))
- m_type = SettingUpdateTypeRename;
- else
- return false;
-
- return true;
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <string>
-
-class TiXmlNode;
-
-typedef enum {
- SettingUpdateTypeNone = 0,
- SettingUpdateTypeRename,
- SettingUpdateTypeChange
-} SettingUpdateType;
-
-class CSettingUpdate
-{
-public:
- CSettingUpdate();
- virtual ~CSettingUpdate() { }
-
- bool operator<(const CSettingUpdate& rhs) const;
-
- virtual bool Deserialize(const TiXmlNode *node);
-
- SettingUpdateType GetType() const { return m_type; }
- const std::string& GetValue() const { return m_value; }
-
-private:
- bool setType(const std::string &type);
-
- SettingUpdateType m_type;
- std::string m_value;
-};
#include "settings/MediaSourceSettings.h"
#include "settings/SettingAddon.h"
#include "settings/SettingControl.h"
-#include "settings/SettingsManager.h"
#include "settings/SettingPath.h"
#include "settings/SkinSettings.h"
+#include "settings/lib/SettingsManager.h"
#include "threads/SingleLock.h"
#include "utils/CharsetConverter.h"
#include "utils/log.h"
return m_settingsManager->GetSetting(id);
}
+std::vector<CSettingSection*> CSettings::GetSections() const
+{
+ CSingleLock lock(m_critical);
+ return m_settingsManager->GetSections();
+}
+
CSettingSection* CSettings::GetSection(const std::string §ion) const
{
CSingleLock lock(m_critical);
return m_settingsManager->SetString(id, value);
}
+std::vector<CVariant> CSettings::GetList(const std::string &id) const
+{
+ CSetting *setting = m_settingsManager->GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeList)
+ return std::vector<CVariant>();
+
+ CSettingList *listSetting = static_cast<CSettingList*>(setting);
+ return ListToValues(listSetting, listSetting->GetValue());
+}
+
+bool CSettings::SetList(const std::string &id, const std::vector<CVariant> &value)
+{
+ CSetting *setting = m_settingsManager->GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeList)
+ return false;
+
+ CSettingList *listSetting = static_cast<CSettingList*>(setting);
+ SettingPtrList newValues;
+ bool ret = true;
+ int index = 0;
+ for (std::vector<CVariant>::const_iterator itValue = value.begin(); itValue != value.end(); ++itValue)
+ {
+ CSetting *settingValue = listSetting->GetDefinition()->Clone(StringUtils::Format("%s.%d", listSetting->GetId().c_str(), index++));
+ if (settingValue == NULL)
+ return false;
+
+ switch (listSetting->GetElementType())
+ {
+ case SettingTypeBool:
+ if (!itValue->isBoolean())
+ return false;
+ ret = static_cast<CSettingBool*>(settingValue)->SetValue(itValue->asBoolean());
+ break;
+
+ case SettingTypeInteger:
+ if (!itValue->isInteger())
+ return false;
+ ret = static_cast<CSettingInt*>(settingValue)->SetValue(itValue->asInteger());
+ break;
+
+ case SettingTypeNumber:
+ if (!itValue->isDouble())
+ return false;
+ ret = static_cast<CSettingNumber*>(settingValue)->SetValue(itValue->asDouble());
+ break;
+
+ case SettingTypeString:
+ if (!itValue->isString())
+ return false;
+ ret = static_cast<CSettingString*>(settingValue)->SetValue(itValue->asString());
+ break;
+
+ default:
+ ret = false;
+ break;
+ }
+
+ if (!ret)
+ {
+ delete settingValue;
+ return false;
+ }
+
+ newValues.push_back(SettingPtr(settingValue));
+ }
+
+ return listSetting->SetValue(newValues);
+}
+
bool CSettings::LoadSetting(const TiXmlNode *node, const std::string &settingId)
{
return m_settingsManager->LoadSetting(node, settingId);
}
+std::vector<CVariant> CSettings::ListToValues(const CSettingList *setting, const std::vector< boost::shared_ptr<CSetting> > &values)
+{
+ std::vector<CVariant> realValues;
+
+ if (setting == NULL)
+ return realValues;
+
+ for (SettingPtrList::const_iterator it = values.begin(); it != values.end(); ++it)
+ {
+ switch (setting->GetElementType())
+ {
+ case SettingTypeBool:
+ realValues.push_back(static_cast<const CSettingBool*>(it->get())->GetValue());
+ break;
+
+ case SettingTypeInteger:
+ realValues.push_back(static_cast<const CSettingInt*>(it->get())->GetValue());
+ break;
+
+ case SettingTypeNumber:
+ realValues.push_back(static_cast<const CSettingNumber*>(it->get())->GetValue());
+ break;
+
+ case SettingTypeString:
+ realValues.push_back(static_cast<const CSettingString*>(it->get())->GetValue());
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return realValues;
+}
+
bool CSettings::Initialize(const std::string &file)
{
CXBMCTinyXML xmlDoc;
#include <set>
#include <string>
+#include <vector>
-#include "settings/ISettingCallback.h"
-#include "settings/ISettingControlCreator.h"
-#include "settings/ISettingCreator.h"
+#include <boost/shared_ptr.hpp>
+
+#include "settings/lib/ISettingCallback.h"
+#include "settings/lib/ISettingControlCreator.h"
+#include "settings/lib/ISettingCreator.h"
#include "threads/CriticalSection.h"
+#include "utils/Variant.h"
class CSetting;
+class CSettingList;
class CSettingSection;
class CSettingsManager;
class TiXmlElement;
*/
CSetting* GetSetting(const std::string &id) const;
/*!
+ \brief Gets the full list of setting sections.
+
+ \return List of setting sections
+ */
+ std::vector<CSettingSection*> GetSections() const;
+ /*!
\brief Gets the setting section with the given identifier.
\param section Setting section identifier
\return String value of the setting with the given identifier
*/
std::string GetString(const std::string &id) const;
+ /*!
+ \brief Gets the values of the list setting with the given identifier.
+
+ \param id Setting identifier
+ \return List of values of the setting with the given identifier
+ */
+ std::vector<CVariant> GetList(const std::string &id) const;
/*!
\brief Sets the boolean value of the setting with the given identifier.
\return True if setting the value was successful, false otherwise
*/
bool SetString(const std::string &id, const std::string &value);
+ /*!
+ \brief Sets the values of the list setting with the given identifier.
+
+ \param id Setting identifier
+ \param value Values to set
+ \return True if setting the values was successful, false otherwise
+ */
+ bool SetList(const std::string &id, const std::vector<CVariant> &value);
/*!
\brief Loads the setting being represented by the given XML node with the
*/
bool LoadSetting(const TiXmlNode *node, const std::string &settingId);
+ static std::vector<CVariant> ListToValues(const CSettingList *setting, const std::vector< boost::shared_ptr<CSetting> > &values);
private:
CSettings(const CSettings&);
CSettings const& operator=(CSettings const&);
+++ /dev/null
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "SettingsManager.h"
-#include "SettingDefinitions.h"
-#include "SettingSection.h"
-#include "Setting.h"
-#include "utils/log.h"
-#include "utils/StringUtils.h"
-#include "utils/XBMCTinyXML.h"
-
-
-CSettingsManager::CSettingsManager()
- : m_initialized(false), m_loaded(false)
-{ }
-
-CSettingsManager::~CSettingsManager()
-{
- // first clear all registered settings handler and subsettings
- // implementations because we can't be sure that they are still valid
- m_settingsHandlers.clear();
- m_subSettings.clear();
- m_settingCreators.clear();
- m_settingControlCreators.clear();
-
- Clear();
-}
-
-bool CSettingsManager::Initialize(const TiXmlElement *root)
-{
- CExclusiveLock lock(m_critical);
- CExclusiveLock settingsLock(m_settingsCritical);
- if (m_initialized || root == NULL)
- return false;
-
- if (!StringUtils::EqualsNoCase(root->ValueStr(), SETTING_XML_ROOT))
- {
- CLog::Log(LOGERROR, "CSettingsManager: error reading settings definition: doesn't contain <settings> tag");
- return false;
- }
-
- const TiXmlNode *sectionNode = root->FirstChild(SETTING_XML_ELM_SECTION);
- while (sectionNode != NULL)
- {
- std::string sectionId;
- if (CSettingSection::DeserializeIdentification(sectionNode, sectionId))
- {
- CSettingSection *section = NULL;
- SettingSectionMap::iterator itSection = m_sections.find(sectionId);
- bool update = (itSection != m_sections.end());
- if (!update)
- section = new CSettingSection(sectionId, this);
- else
- section = itSection->second;
-
- if (section->Deserialize(sectionNode, update))
- {
- section->CheckRequirements();
- if (!update)
- m_sections[section->GetId()] = section;
-
- // get all settings and add them to the settings map
- for (SettingCategoryList::const_iterator categoryIt = section->GetCategories().begin(); categoryIt != section->GetCategories().end(); ++categoryIt)
- {
- (*categoryIt)->CheckRequirements();
- for (SettingGroupList::const_iterator groupIt = (*categoryIt)->GetGroups().begin(); groupIt != (*categoryIt)->GetGroups().end(); ++groupIt)
- {
- (*groupIt)->CheckRequirements();
- for (SettingList::const_iterator settingIt = (*groupIt)->GetSettings().begin(); settingIt != (*groupIt)->GetSettings().end(); ++settingIt)
- {
- (*settingIt)->CheckRequirements();
-
- const std::string &settingId = (*settingIt)->GetId();
- SettingMap::iterator setting = m_settings.find(settingId);
- if (setting == m_settings.end())
- {
- Setting tmpSetting = { NULL };
- std::pair<SettingMap::iterator, bool> tmpIt = m_settings.insert(make_pair(settingId, tmpSetting));
- setting = tmpIt.first;
- }
-
- if (setting->second.setting == NULL)
- {
- setting->second.setting = *settingIt;
- (*settingIt)->m_callback = this;
- }
- }
- }
- }
- }
- else
- {
- CLog::Log(LOGWARNING, "CSettingsManager: unable to read section \"%s\"", sectionId.c_str());
- if (!update)
- delete section;
- }
- }
-
- sectionNode = sectionNode->NextSibling(SETTING_XML_ELM_SECTION);
- }
-
- for (SettingMap::iterator itSettingDep = m_settings.begin(); itSettingDep != m_settings.end(); ++itSettingDep)
- {
- if (itSettingDep->second.setting == NULL)
- continue;
-
- const SettingDependencies& deps = itSettingDep->second.setting->GetDependencies();
- for (SettingDependencies::const_iterator depIt = deps.begin(); depIt != deps.end(); ++depIt)
- {
- std::set<std::string> settingIds = depIt->GetSettings();
- for (std::set<std::string>::const_iterator itSettingId = settingIds.begin(); itSettingId != settingIds.end(); ++itSettingId)
- {
- SettingMap::iterator setting = m_settings.find(*itSettingId);
- if (setting == m_settings.end())
- continue;
-
- bool newDep = true;
- SettingDependencies &settingDeps = setting->second.dependencies[itSettingDep->first];
- for (SettingDependencies::const_iterator itDeps = settingDeps.begin(); itDeps != settingDeps.end(); ++itDeps)
- {
- if (itDeps->GetType() == depIt->GetType())
- {
- newDep = false;
- break;
- }
- }
-
- if (newDep)
- settingDeps.push_back(*depIt);
- }
- }
- }
-
- return true;
-}
-
-bool CSettingsManager::Load(const TiXmlElement *root, bool &updated, bool triggerEvents /* = true */, std::map<std::string, CSetting*> *loadedSettings /* = NULL */)
-{
- CSharedLock lock(m_critical);
- CExclusiveLock settingsLock(m_settingsCritical);
- if (m_loaded || root == NULL)
- return false;
-
- if (triggerEvents && !OnSettingsLoading())
- return false;
-
- if (!Deserialize(root, loadedSettings))
- return false;
-
- bool ret = true;
- // load any ISubSettings implementations
- if (triggerEvents)
- ret = Load(root);
-
- updated = UpdateSettings(root);
-
- if (triggerEvents)
- OnSettingsLoaded();
-
- return ret;
-}
-
-bool CSettingsManager::Save(TiXmlNode *root) const
-{
- CSharedLock lock(m_critical);
- CSharedLock settingsLock(m_settingsCritical);
- if (!m_initialized || root == NULL)
- return false;
-
- if (!OnSettingsSaving())
- return false;
-
- if (!Serialize(root))
- {
- CLog::Log(LOGERROR, "CSettingsManager: failed to save settings");
- return false;
- }
-
- // save any ISubSettings implementations
- for (std::set<ISubSettings*>::const_iterator it = m_subSettings.begin(); it != m_subSettings.end(); ++it)
- {
- if (!(*it)->Save(root))
- return false;
- }
-
- OnSettingsSaved();
-
- return true;
-}
-
-void CSettingsManager::Unload()
-{
- CExclusiveLock lock(m_settingsCritical);
- if (!m_loaded)
- return;
-
- // needs to be set before calling CSetting::Reset() to avoid calls to
- // OnSettingChanging() and OnSettingChanged()
- m_loaded = false;
-
- for (SettingMap::iterator setting = m_settings.begin(); setting != m_settings.end(); ++setting)
- setting->second.setting->Reset();
-
- OnSettingsUnloaded();
-}
-
-void CSettingsManager::Clear()
-{
- CExclusiveLock lock(m_critical);
- Unload();
-
- m_settings.clear();
- for (SettingSectionMap::iterator section = m_sections.begin(); section != m_sections.end(); ++section)
- delete section->second;
- m_sections.clear();
-
- OnSettingsCleared();
-
- for (std::set<ISubSettings*>::const_iterator it = m_subSettings.begin(); it != m_subSettings.end(); ++it)
- (*it)->Clear();
-
- m_initialized = false;
-}
-
-bool CSettingsManager::LoadSetting(const TiXmlNode *node, const std::string &settingId)
-{
- if (node == NULL)
- return false;
-
- CSetting *setting = GetSetting(settingId);
- if (setting == NULL)
- return false;
-
- return LoadSetting(node, setting);
-}
-
-void CSettingsManager::SetInitialized()
-{
- CExclusiveLock lock(m_settingsCritical);
- if (m_initialized)
- return;
-
- m_initialized = true;
-
- for (SettingMap::iterator setting = m_settings.begin(); setting != m_settings.end(); )
- {
- SettingMap::iterator tmpIterator = setting++;
- if (tmpIterator->second.setting == NULL)
- m_settings.erase(tmpIterator);
- }
-}
-
-void CSettingsManager::RegisterCallback(ISettingCallback *callback, const std::set<std::string> &settingList)
-{
- CExclusiveLock lock(m_settingsCritical);
- if (callback == NULL)
- return;
-
- for (std::set<std::string>::const_iterator settingIt = settingList.begin(); settingIt != settingList.end(); ++settingIt)
- {
- std::string id = *settingIt;
- StringUtils::ToLower(id);
-
- SettingMap::iterator setting = m_settings.find(id);
- if (setting == m_settings.end())
- {
- if (m_initialized)
- continue;
-
- Setting tmpSetting = { NULL };
- std::pair<SettingMap::iterator, bool> tmpIt = m_settings.insert(make_pair(id, tmpSetting));
- setting = tmpIt.first;
- }
-
- setting->second.callbacks.insert(callback);
- }
-}
-
-void CSettingsManager::UnregisterCallback(ISettingCallback *callback)
-{
- CExclusiveLock lock(m_settingsCritical);
- for (SettingMap::iterator settingIt = m_settings.begin(); settingIt != m_settings.end(); ++settingIt)
- settingIt->second.callbacks.erase(callback);
-}
-
-void CSettingsManager::RegisterSettingType(const std::string &settingType, ISettingCreator *settingCreator)
-{
- CExclusiveLock lock(m_critical);
- if (settingType.empty() || settingCreator == NULL)
- return;
-
- SettingCreatorMap::const_iterator creatorIt = m_settingCreators.find(settingType);
- if (creatorIt == m_settingCreators.end())
- m_settingCreators.insert(make_pair(settingType, settingCreator));
-}
-
-void CSettingsManager::RegisterSettingControl(const std::string &controlType, ISettingControlCreator *settingControlCreator)
-{
- if (controlType.empty() || settingControlCreator == NULL)
- return;
-
- CExclusiveLock lock(m_critical);
- SettingControlCreatorMap::const_iterator creatorIt = m_settingControlCreators.find(controlType);
- if (creatorIt == m_settingControlCreators.end())
- m_settingControlCreators.insert(make_pair(controlType, settingControlCreator));
-}
-
-void CSettingsManager::RegisterSettingsHandler(ISettingsHandler *settingsHandler)
-{
- if (settingsHandler == NULL)
- return;
-
- CExclusiveLock lock(m_critical);
- if (find(m_settingsHandlers.begin(), m_settingsHandlers.end(), settingsHandler) == m_settingsHandlers.end())
- m_settingsHandlers.push_back(settingsHandler);
-}
-
-void CSettingsManager::UnregisterSettingsHandler(ISettingsHandler *settingsHandler)
-{
- if (settingsHandler == NULL)
- return;
-
- CExclusiveLock lock(m_critical);
- SettingsHandlers::iterator it = find(m_settingsHandlers.begin(), m_settingsHandlers.end(), settingsHandler);
- if (it != m_settingsHandlers.end())
- m_settingsHandlers.erase(it);
-}
-
-void CSettingsManager::RegisterSubSettings(ISubSettings *subSettings)
-{
- CExclusiveLock lock(m_critical);
- if (subSettings == NULL)
- return;
-
- m_subSettings.insert(subSettings);
-}
-
-void CSettingsManager::UnregisterSubSettings(ISubSettings *subSettings)
-{
- CExclusiveLock lock(m_critical);
- if (subSettings == NULL)
- return;
-
- m_subSettings.erase(subSettings);
-}
-
-void CSettingsManager::RegisterSettingOptionsFiller(const std::string &identifier, IntegerSettingOptionsFiller optionsFiller)
-{
- if (identifier.empty() || optionsFiller == NULL)
- return;
-
- RegisterSettingOptionsFiller(identifier, (void*)optionsFiller, SettingOptionsFillerTypeInteger);
-}
-
-void CSettingsManager::RegisterSettingOptionsFiller(const std::string &identifier, StringSettingOptionsFiller optionsFiller)
-{
- if (identifier.empty() || optionsFiller == NULL)
- return;
-
- RegisterSettingOptionsFiller(identifier, (void*)optionsFiller, SettingOptionsFillerTypeString);
-}
-
-void CSettingsManager::UnregisterSettingOptionsFiller(const std::string &identifier)
-{
- CExclusiveLock lock(m_critical);
- m_optionsFillers.erase(identifier);
-}
-
-void* CSettingsManager::GetSettingOptionsFiller(const CSetting *setting)
-{
- CSharedLock lock(m_critical);
- if (setting == NULL)
- return NULL;
-
- // get the option filler's identifier
- std::string filler;
- if (setting->GetType() == SettingTypeInteger)
- filler = ((const CSettingInt*)setting)->GetOptionsFiller();
- else if (setting->GetType() == SettingTypeString)
- filler = ((const CSettingString*)setting)->GetOptionsFiller();
-
- if (filler.empty())
- return NULL;
-
- // check if such an option filler is known
- SettingOptionsFillerMap::const_iterator fillerIt = m_optionsFillers.find(filler);
- if (fillerIt == m_optionsFillers.end())
- return NULL;
-
- if (fillerIt->second.filler == NULL)
- return NULL;
-
- // make sure the option filler's type matches the setting's type
- switch (fillerIt->second.type)
- {
- case SettingOptionsFillerTypeInteger:
- {
- if (setting->GetType() != SettingTypeInteger)
- return NULL;
-
- break;
- }
-
- case SettingOptionsFillerTypeString:
- {
- if (setting->GetType() != SettingTypeString)
- return NULL;
-
- break;
- }
-
- default:
- return NULL;
- }
-
- return fillerIt->second.filler;
-}
-
-CSetting* CSettingsManager::GetSetting(const std::string &id) const
-{
- CSharedLock lock(m_settingsCritical);
- if (id.empty())
- return NULL;
-
- std::string settingId = id;
- StringUtils::ToLower(settingId);
-
- SettingMap::const_iterator setting = m_settings.find(settingId);
- if (setting != m_settings.end())
- return setting->second.setting;
-
- CLog::Log(LOGDEBUG, "CSettingsManager: requested setting (%s) was not found.", id.c_str());
- return NULL;
-}
-
-CSettingSection* CSettingsManager::GetSection(const std::string §ion) const
-{
- CSharedLock lock(m_critical);
- if (section.empty())
- return NULL;
-
- std::string sectionId = section;
- StringUtils::ToLower(sectionId);
-
- SettingSectionMap::const_iterator sectionIt = m_sections.find(sectionId);
- if (sectionIt != m_sections.end())
- return sectionIt->second;
-
- CLog::Log(LOGDEBUG, "CSettingsManager: requested setting section (%s) was not found.", section.c_str());
- return NULL;
-}
-
-SettingDependencyMap CSettingsManager::GetDependencies(const std::string &id) const
-{
- CSharedLock lock(m_settingsCritical);
- SettingMap::const_iterator setting = m_settings.find(id);
- if (setting == m_settings.end())
- return SettingDependencyMap();
-
- return setting->second.dependencies;
-}
-
-SettingDependencyMap CSettingsManager::GetDependencies(const CSetting *setting) const
-{
- if (setting == NULL)
- return SettingDependencyMap();
-
- return GetDependencies(setting->GetId());
-}
-
-bool CSettingsManager::GetBool(const std::string &id) const
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeBool)
- return false;
-
- return ((CSettingBool*)setting)->GetValue();
-}
-
-bool CSettingsManager::SetBool(const std::string &id, bool value)
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeBool)
- return false;
-
- return ((CSettingBool*)setting)->SetValue(value);
-}
-
-bool CSettingsManager::ToggleBool(const std::string &id)
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeBool)
- return false;
-
- return SetBool(id, !((CSettingBool*)setting)->GetValue());
-}
-
-int CSettingsManager::GetInt(const std::string &id) const
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeInteger)
- return 0;
-
- return ((CSettingInt*)setting)->GetValue();
-}
-
-bool CSettingsManager::SetInt(const std::string &id, int value)
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeInteger)
- return false;
-
- return ((CSettingInt*)setting)->SetValue(value);
-}
-
-double CSettingsManager::GetNumber(const std::string &id) const
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeNumber)
- return 0.0;
-
- return ((CSettingNumber*)setting)->GetValue();
-}
-
-bool CSettingsManager::SetNumber(const std::string &id, double value)
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeNumber)
- return false;
-
- return ((CSettingNumber*)setting)->SetValue(value);
-}
-
-std::string CSettingsManager::GetString(const std::string &id) const
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeString)
- return "";
-
- return ((CSettingString*)setting)->GetValue();
-}
-
-bool CSettingsManager::SetString(const std::string &id, const std::string &value)
-{
- CSharedLock lock(m_settingsCritical);
- CSetting *setting = GetSetting(id);
- if (setting == NULL || setting->GetType() != SettingTypeString)
- return false;
-
- return ((CSettingString*)setting)->SetValue(value);
-}
-
-void CSettingsManager::AddCondition(const std::string &condition)
-{
- CExclusiveLock lock(m_critical);
- if (condition.empty())
- return;
-
- m_conditions.AddCondition(condition);
-}
-
-void CSettingsManager::AddCondition(const std::string &identifier, SettingConditionCheck condition)
-{
- CExclusiveLock lock(m_critical);
- if (identifier.empty() || condition == NULL)
- return;
-
- m_conditions.AddCondition(identifier, condition);
-}
-
-bool CSettingsManager::Serialize(TiXmlNode *parent) const
-{
- if (parent == NULL)
- return false;
-
- CSharedLock lock(m_settingsCritical);
-
- for (SettingMap::const_iterator it = m_settings.begin(); it != m_settings.end(); ++it)
- {
- if (it->second.setting->GetType() == SettingTypeAction)
- continue;
-
- std::vector<std::string> parts = StringUtils::Split(it->first, ".");
- if (parts.size() != 2 || parts.at(0).empty() || parts.at(1).empty())
- {
- CLog::Log(LOGWARNING, "CSettingsManager: unable to save setting \"%s\"", it->first.c_str());
- continue;
- }
-
- TiXmlNode *sectionNode = parent->FirstChild(parts.at(0));
- if (sectionNode == NULL)
- {
- TiXmlElement sectionElement(parts.at(0));
- sectionNode = parent->InsertEndChild(sectionElement);
-
- if (sectionNode == NULL)
- {
- CLog::Log(LOGWARNING, "CSettingsManager: unable to write <%s> tag", parts.at(0).c_str());
- continue;
- }
- }
-
- TiXmlElement settingElement(parts.at(1));
- TiXmlNode *settingNode = sectionNode->InsertEndChild(settingElement);
- if (settingNode == NULL)
- {
- CLog::Log(LOGWARNING, "CSetting: unable to write <%s> tag in <%s>", parts.at(1).c_str(), parts.at(0).c_str());
- continue;
- }
-
- TiXmlText value(it->second.setting->ToString());
- settingNode->InsertEndChild(value);
- }
-
- return true;
-}
-
-bool CSettingsManager::Deserialize(const TiXmlNode *node, std::map<std::string, CSetting*> *loadedSettings /* = NULL */)
-{
- if (node == NULL)
- return false;
-
- CSharedLock lock(m_settingsCritical);
-
- for (SettingMap::iterator it = m_settings.begin(); it != m_settings.end(); ++it)
- {
- if (LoadSetting(node, it->second.setting) && loadedSettings != NULL)
- loadedSettings->insert(make_pair(it->first, it->second.setting));
- }
-
- return true;
-}
-
-bool CSettingsManager::OnSettingChanging(const CSetting *setting)
-{
- if (setting == NULL)
- return false;
-
- CSharedLock lock(m_settingsCritical);
- if (!m_loaded)
- return true;
-
- SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
- if (settingIt == m_settings.end())
- return false;
-
- Setting settingData = settingIt->second;
- // now that we have a copy of the setting's data, we can leave the lock
- lock.Leave();
-
- for (CallbackSet::iterator callback = settingData.callbacks.begin();
- callback != settingData.callbacks.end();
- ++callback)
- {
- if (!(*callback)->OnSettingChanging(setting))
- return false;
- }
-
- return true;
-}
-
-void CSettingsManager::OnSettingChanged(const CSetting *setting)
-{
- CSharedLock lock(m_settingsCritical);
- if (!m_loaded || setting == NULL)
- return;
-
- SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
- if (settingIt == m_settings.end())
- return;
-
- Setting settingData = settingIt->second;
- // now that we have a copy of the setting's data, we can leave the lock
- lock.Leave();
-
- for (CallbackSet::iterator callback = settingData.callbacks.begin();
- callback != settingData.callbacks.end();
- ++callback)
- (*callback)->OnSettingChanged(setting);
-
- // now handle any settings which depend on the changed setting
- const SettingDependencyMap& deps = GetDependencies(setting);
- for (SettingDependencyMap::const_iterator depsIt = deps.begin(); depsIt != deps.end(); ++depsIt)
- {
- for (SettingDependencies::const_iterator depIt = depsIt->second.begin(); depIt != depsIt->second.end(); ++depIt)
- UpdateSettingByDependency(depsIt->first, *depIt);
- }
-}
-
-void CSettingsManager::OnSettingAction(const CSetting *setting)
-{
- CSharedLock lock(m_settingsCritical);
- if (!m_loaded || setting == NULL)
- return;
-
- SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
- if (settingIt == m_settings.end())
- return;
-
- Setting settingData = settingIt->second;
- // now that we have a copy of the setting's data, we can leave the lock
- lock.Leave();
-
- for (CallbackSet::iterator callback = settingData.callbacks.begin();
- callback != settingData.callbacks.end();
- ++callback)
- (*callback)->OnSettingAction(setting);
-}
-
-bool CSettingsManager::OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode)
-{
- CSharedLock lock(m_settingsCritical);
- if (setting == NULL)
- return false;
-
- SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
- if (settingIt == m_settings.end())
- return false;
-
- Setting settingData = settingIt->second;
- // now that we have a copy of the setting's data, we can leave the lock
- lock.Leave();
-
- bool ret = false;
- for (CallbackSet::iterator callback = settingData.callbacks.begin();
- callback != settingData.callbacks.end();
- ++callback)
- ret |= (*callback)->OnSettingUpdate(setting, oldSettingId, oldSettingNode);
-
- return ret;
-}
-
-void CSettingsManager::OnSettingPropertyChanged(const CSetting *setting, const char *propertyName)
-{
- CSharedLock lock(m_settingsCritical);
- if (!m_loaded || setting == NULL)
- return;
-
- SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
- if (settingIt == m_settings.end())
- return;
-
- Setting settingData = settingIt->second;
- // now that we have a copy of the setting's data, we can leave the lock
- lock.Leave();
-
- for (CallbackSet::iterator callback = settingData.callbacks.begin();
- callback != settingData.callbacks.end();
- ++callback)
- (*callback)->OnSettingPropertyChanged(setting, propertyName);
-}
-
-CSetting* CSettingsManager::CreateSetting(const std::string &settingType, const std::string &settingId, CSettingsManager *settingsManager /* = NULL */) const
-{
- if (StringUtils::EqualsNoCase(settingType, "boolean"))
- return new CSettingBool(settingId, (CSettingsManager*)this);
- else if (StringUtils::EqualsNoCase(settingType, "integer"))
- return new CSettingInt(settingId, (CSettingsManager*)this);
- else if (StringUtils::EqualsNoCase(settingType, "number"))
- return new CSettingNumber(settingId, (CSettingsManager*)this);
- else if (StringUtils::EqualsNoCase(settingType, "string"))
- return new CSettingString(settingId, (CSettingsManager*)this);
- else if (StringUtils::EqualsNoCase(settingType, "action"))
- return new CSettingAction(settingId, (CSettingsManager*)this);
-
- CSharedLock lock(m_critical);
- SettingCreatorMap::const_iterator creator = m_settingCreators.find(settingType);
- if (creator != m_settingCreators.end())
- return creator->second->CreateSetting(settingType, settingId, (CSettingsManager*)this);
-
- return NULL;
-}
-
-ISettingControl* CSettingsManager::CreateControl(const std::string &controlType) const
-{
- if (controlType.empty())
- return NULL;
-
- CSharedLock lock(m_critical);
- SettingControlCreatorMap::const_iterator creator = m_settingControlCreators.find(controlType);
- if (creator != m_settingControlCreators.end() && creator->second != NULL)
- return creator->second->CreateControl(controlType);
-
- return NULL;
-}
-
-bool CSettingsManager::OnSettingsLoading()
-{
- CSharedLock lock(m_critical);
- for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
- {
- if (!(*it)->OnSettingsLoading())
- return false;
- }
-
- return true;
-}
-
-void CSettingsManager::OnSettingsLoaded()
-{
- CSharedLock lock(m_critical);
- for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
- (*it)->OnSettingsLoaded();
-}
-
-bool CSettingsManager::OnSettingsSaving() const
-{
- CSharedLock lock(m_critical);
- for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
- {
- if (!(*it)->OnSettingsSaving())
- return false;
- }
-
- return true;
-}
-
-void CSettingsManager::OnSettingsSaved() const
-{
- CSharedLock lock(m_critical);
- for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
- (*it)->OnSettingsSaved();
-}
-
-void CSettingsManager::OnSettingsCleared()
-{
- CSharedLock lock(m_critical);
- for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
- (*it)->OnSettingsCleared();
-}
-
-bool CSettingsManager::Load(const TiXmlNode *settings)
-{
- bool ok = true;
- CSharedLock lock(m_critical);
- for (std::set<ISubSettings*>::const_iterator it = m_subSettings.begin(); it != m_subSettings.end(); ++it)
- ok &= (*it)->Load(settings);
-
- return ok;
-}
-
-bool CSettingsManager::LoadSetting(const TiXmlNode *node, CSetting *setting)
-{
- if (node == NULL || setting == NULL)
- return false;
-
- if (setting->GetType() == SettingTypeAction)
- return false;
-
- const std::string &settingId = setting->GetId();
-
- std::vector<std::string> parts = StringUtils::Split(settingId, ".");
- if (parts.size() != 2 || parts.at(0).empty() || parts.at(1).empty())
- {
- CLog::Log(LOGWARNING, "CSettingsManager: unable to load setting \"%s\"", settingId.c_str());
- return false;
- }
-
- const TiXmlNode *sectionNode = node->FirstChild(parts.at(0));
- if (sectionNode == NULL)
- return false;
-
- const TiXmlNode *settingNode = sectionNode->FirstChild(parts.at(1));
- if (settingNode == NULL)
- return false;
-
- if (!setting->FromString(settingNode->FirstChild() != NULL ? settingNode->FirstChild()->ValueStr() : StringUtils::Empty))
- {
- CLog::Log(LOGWARNING, "CSettingsManager: unable to read value of setting \"%s\"", settingId.c_str());
- return false;
- }
-
- return true;
-}
-
-bool CSettingsManager::UpdateSettings(const TiXmlNode *root)
-{
- bool updated = false;
- CSharedLock lock(m_settingsCritical);
-
- for (SettingMap::iterator setting = m_settings.begin(); setting != m_settings.end(); ++setting)
- {
- const std::set<CSettingUpdate>& updates = setting->second.setting->GetUpdates();
- if (updates.empty())
- continue;
-
- for (std::set<CSettingUpdate>::const_iterator update = updates.begin(); update != updates.end(); ++update)
- updated |= UpdateSetting(root, setting->second.setting, *update);
- }
-
- return updated;
-}
-
-bool CSettingsManager::UpdateSetting(const TiXmlNode *node, CSetting *setting, const CSettingUpdate& update)
-{
- if (node == NULL || setting == NULL || update.GetType() == SettingUpdateTypeNone)
- return false;
-
- bool updated = false;
- const char *oldSetting = NULL;
- const TiXmlNode *oldSettingNode = NULL;
- if (update.GetType() == SettingUpdateTypeRename)
- {
- if (update.GetValue().empty())
- return false;
-
- oldSetting = update.GetValue().c_str();
- std::vector<std::string> parts = StringUtils::Split(oldSetting, ".");
- if (parts.size() != 2 || parts.at(0).empty() || parts.at(1).empty())
- return false;
-
- const TiXmlNode *sectionNode = node->FirstChild(parts.at(0));
- if (sectionNode == NULL)
- return false;
-
- oldSettingNode = sectionNode->FirstChild(parts.at(1));
- if (oldSettingNode == NULL)
- return false;
-
- if (setting->FromString(oldSettingNode->FirstChild() != NULL ? oldSettingNode->FirstChild()->ValueStr() : StringUtils::Empty))
- updated = true;
- else
- CLog::Log(LOGWARNING, "CSetting: unable to update \"%s\" through automatically renaming from \"%s\"", setting->GetId().c_str(), oldSetting);
- }
-
- updated |= OnSettingUpdate(setting, oldSetting, oldSettingNode);
- return updated;
-}
-
-void CSettingsManager::UpdateSettingByDependency(const std::string &settingId, const CSettingDependency &dependency)
-{
- CSetting *setting = GetSetting(settingId);
- if (setting == NULL)
- return;
-
- switch (dependency.GetType())
- {
- case SettingDependencyTypeEnable:
- // just trigger the property changed callback and a call to
- // CSetting::IsEnabled() will automatically determine the new
- // enabled state
- OnSettingPropertyChanged(setting, "enabled");
- break;
-
- case SettingDependencyTypeUpdate:
- {
- SettingType type = (SettingType)setting->GetType();
- if (type == SettingTypeInteger)
- {
- CSettingInt *settingInt = ((CSettingInt*)setting);
- if (settingInt->GetOptionsType() == SettingOptionsTypeDynamic)
- settingInt->UpdateDynamicOptions();
- }
- else if (type == SettingTypeString)
- {
- CSettingString *settingString = ((CSettingString*)setting);
- if (settingString->GetOptionsType() == SettingOptionsTypeDynamic)
- settingString->UpdateDynamicOptions();
- }
- break;
- }
-
- case SettingDependencyTypeVisible:
- // just trigger the property changed callback and a call to
- // CSetting::IsVisible() will automatically determine the new
- // visible state
- OnSettingPropertyChanged(setting, "visible");
- break;
-
- case SettingDependencyTypeNone:
- default:
- break;
- }
-}
-
-void CSettingsManager::RegisterSettingOptionsFiller(const std::string &identifier, void *filler, SettingOptionsFillerType type)
-{
- CExclusiveLock lock(m_critical);
- SettingOptionsFillerMap::const_iterator it = m_optionsFillers.find(identifier);
- if (it != m_optionsFillers.end())
- return;
-
- SettingOptionsFiller optionsFiller = { filler, type };
- m_optionsFillers.insert(make_pair(identifier, optionsFiller));
-}
+++ /dev/null
-#pragma once
-/*
- * Copyright (C) 2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <map>
-#include <set>
-#include <vector>
-
-#include "ISetting.h"
-#include "ISettingCallback.h"
-#include "ISettingControlCreator.h"
-#include "ISettingCreator.h"
-#include "ISettingsHandler.h"
-#include "ISubSettings.h"
-#include "SettingConditions.h"
-#include "SettingDependency.h"
-#include "threads/SharedSection.h"
-
-class CSettingSection;
-class CSettingUpdate;
-
-class TiXmlElement;
-class TiXmlNode;
-
-typedef void (*IntegerSettingOptionsFiller)(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int ¤t);
-typedef void (*StringSettingOptionsFiller)(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t);
-
-/*!
- \ingroup settings
- \brief Settings manager responsible for initializing, loading and handling
- all settings.
- */
-class CSettingsManager : public ISettingCreator, public ISettingControlCreator,
- private ISettingCallback,
- private ISettingsHandler, private ISubSettings
-{
-public:
- /*!
- \brief Creates a new (uninitialized) settings manager.
- */
- CSettingsManager();
- virtual ~CSettingsManager();
-
- // implementation of ISettingCreator
- virtual CSetting* CreateSetting(const std::string &settingType, const std::string &settingId, CSettingsManager *settingsManager = NULL) const;
-
- // implementation of ISettingControlCreator
- virtual ISettingControl* CreateControl(const std::string &controlType) const;
-
- /*!
- \brief Initializes the settings manager using the setting definitions
- represented by the given XML element.
-
- \param root XML element representing setting definitions
- \return True if the XML element was successfully deserialized into setting definitions, false otherwise
- */
- bool Initialize(const TiXmlElement *root);
- /*!
- \brief Loads setting values from the given XML element.
-
- \param root XML element containing setting values
- \param updated Whether some settings were automatically updated
- \param triggerEvents Whether to trigger ISettingCallback methods
- \param loadedSettings A list to fill with all the successfully loaded settings
- \return True if the setting values were successfully loaded, false otherwise
- */
- bool Load(const TiXmlElement *root, bool &updated, bool triggerEvents = true, std::map<std::string, CSetting*> *loadedSettings = NULL);
- /*!
- \brief Saves the setting values to the given XML node.
-
- \param root XML node
- \return True if the setting values were successfully saved, false otherwise
- */
- virtual bool Save(TiXmlNode *root) const;
- /*!
- \brief Unloads the previously loaded setting values.
-
- The values of all the settings are reset to their default values.
- */
- void Unload();
- /*!
- \brief Clears the complete settings manager.
-
- This removes all initialized settings, groups, categories and sections and
- returns to the uninitialized state. Any registered callbacks or
- implementations stay registered.
- */
- void Clear();
-
- /*!
- \brief Loads the setting being represented by the given XML node with the
- given identifier.
-
- \param node XML node representing the setting to load
- \param settingId Setting identifier
- \return True if the setting was successfully loaded from the given XML node, false otherwise
- */
- bool LoadSetting(const TiXmlNode *node, const std::string &settingId);
-
- /*!
- \brief Tells the settings system that the initialization is complete.
-
- Setting values can only be loaded after a complete and successful
- initialization of the settings system.
- */
- void SetInitialized();
- /*!
- \brief Tells the settings system that all setting values
- have been loaded.
-
- This manual trigger is necessary to enable the ISettingCallback methods
- being executed.
- */
- void SetLoaded() { m_loaded = true; }
-
- /*!
- \brief Registers the given ISettingCallback implementation to be triggered
- for the given list of settings.
-
- \param settingsHandler ISettingsHandler implementation
- \param settingList List of settings to trigger the given ISettingCallback implementation
- */
- void RegisterCallback(ISettingCallback *callback, const std::set<std::string> &settingList);
- /*!
- \brief Unregisters the given ISettingCallback implementation.
-
- \param callback ISettingCallback implementation
- */
- void UnregisterCallback(ISettingCallback *callback);
-
- /*!
- \brief Registers a custom setting type and its ISettingCreator
- implementation.
-
- When a setting definition for a registered custom setting type is found its
- ISettingCreator implementation is called to create and deserialize the
- setting definition.
-
- \param settingType String representation of the custom setting type
- \param settingCreator ISettingCreator implementation
- */
- void RegisterSettingType(const std::string &settingType, ISettingCreator *settingCreator);
-
- /*!
- \brief Registers a custom setting control type and its
- ISettingControlCreator implementation
-
- When a setting control definition for a registered custom setting control
- type is found its ISettingControlCreator implementation is called to create
- and deserialize the setting control definition.
-
- \param controlType String representation of the custom setting control type
- \param settingControlCreator ISettingControlCreator implementation
- */
- void RegisterSettingControl(const std::string &controlType, ISettingControlCreator *settingControlCreator);
-
- /*!
- \brief Registers the given ISettingsHandler implementation.
-
- \param settingsHandler ISettingsHandler implementation
- */
- void RegisterSettingsHandler(ISettingsHandler *settingsHandler);
- /*!
- \brief Unregisters the given ISettingsHandler implementation.
-
- \param settingsHandler ISettingsHandler implementation
- */
- void UnregisterSettingsHandler(ISettingsHandler *settingsHandler);
-
- /*!
- \brief Registers the given ISubSettings implementation.
-
- \param subSettings ISubSettings implementation
- */
- void RegisterSubSettings(ISubSettings *subSettings);
- /*!
- \brief Unregisters the given ISubSettings implementation.
-
- \param subSettings ISubSettings implementation
- */
- void UnregisterSubSettings(ISubSettings *subSettings);
-
- /*!
- \brief Registers the given integer setting options filler under the given identifier.
-
- \param identifier Setting options filler identifier
- \param optionsFiller Integer setting options filler implementation
- */
- void RegisterSettingOptionsFiller(const std::string &identifier, IntegerSettingOptionsFiller optionsFiller);
- /*!
- \brief Registers the given string setting options filler under the given identifier.
-
- \param identifier Setting options filler identifier
- \param optionsFiller String setting options filler implementation
- */
- void RegisterSettingOptionsFiller(const std::string &identifier, StringSettingOptionsFiller optionsFiller);
- /*!
- \brief Unregisters the setting options filler registered under the given identifier.
-
- \param identifier Setting options filler identifier
- */
- void UnregisterSettingOptionsFiller(const std::string &identifier);
- /*!
- \brief Gets the implementation of the setting options filler used by the
- given setting.
-
- \param setting Setting object
- \return Implementation of the setting options filler (either IntegerSettingOptionsFiller or StringSettingOptionsFiller)
- */
- void* GetSettingOptionsFiller(const CSetting *setting);
-
- /*!
- \brief Gets the setting with the given identifier.
-
- \param id Setting identifier
- \return Setting object with the given identifier or NULL if the identifier is unknown
- */
- CSetting* GetSetting(const std::string &id) const;
- /*!
- \brief Gets the setting section with the given identifier.
-
- \param section Setting section identifier
- \return Setting section with the given identifier or NULL if the identifier is unknown
- */
- CSettingSection* GetSection(const std::string §ion) const;
- /*!
- \brief Gets a map of settings (and their dependencies) which depend on
- the setting with the given identifier.
-
- It is important to note that the returned dependencies are not the
- dependencies of the setting with the given identifier but the settings
- (and their dependencies) which depend on the setting with the given
- identifier.
-
- \param id Setting identifier
- \return Map of settings (and their dependencies) which depend on the setting with the given identifier
- */
- SettingDependencyMap GetDependencies(const std::string &id) const;
- /*!
- \brief Gets a map of settings (and their dependencies) which depend on
- the given setting.
-
- It is important to note that the returned dependencies are not the
- dependencies of the given setting but the settings (and their dependencies)
- which depend on the given setting.
-
- \param setting Setting object
- \return Map of settings (and their dependencies) which depend on the given setting
- */
- SettingDependencyMap GetDependencies(const CSetting *setting) const;
-
- /*!
- \brief Gets the boolean value of the setting with the given identifier.
-
- \param id Setting identifier
- \return Boolean value of the setting with the given identifier
- */
- bool GetBool(const std::string &id) const;
- /*!
- \brief Gets the integer value of the setting with the given identifier.
-
- \param id Setting identifier
- \return Integer value of the setting with the given identifier
- */
- int GetInt(const std::string &id) const;
- /*!
- \brief Gets the real number value of the setting with the given identifier.
-
- \param id Setting identifier
- \return Real number value of the setting with the given identifier
- */
- double GetNumber(const std::string &id) const;
- /*!
- \brief Gets the string value of the setting with the given identifier.
-
- \param id Setting identifier
- \return String value of the setting with the given identifier
- */
- std::string GetString(const std::string &id) const;
-
- /*!
- \brief Sets the boolean value of the setting with the given identifier.
-
- \param id Setting identifier
- \param value Boolean value to set
- \return True if setting the value was successful, false otherwise
- */
- bool SetBool(const std::string &id, bool value);
- /*!
- \brief Toggles the boolean value of the setting with the given identifier.
-
- \param id Setting identifier
- \return True if toggling the boolean value was successful, false otherwise
- */
- bool ToggleBool(const std::string &id);
- /*!
- \brief Sets the integer value of the setting with the given identifier.
-
- \param id Setting identifier
- \param value Integer value to set
- \return True if setting the value was successful, false otherwise
- */
- bool SetInt(const std::string &id, int value);
- /*!
- \brief Sets the real number value of the setting with the given identifier.
-
- \param id Setting identifier
- \param value Real number value to set
- \return True if setting the value was successful, false otherwise
- */
- bool SetNumber(const std::string &id, double value);
- /*!
- \brief Sets the string value of the setting with the given identifier.
-
- \param id Setting identifier
- \param value String value to set
- \return True if setting the value was successful, false otherwise
- */
- bool SetString(const std::string &id, const std::string &value);
-
- /*!
- \brief Gets the setting conditions manager used by the settings manager.
-
- \return Setting conditions manager used by the settings manager.
- */
- const CSettingConditionsManager& GetConditions() const { return m_conditions; }
- /*!
- \brief Adds the given static condition.
-
- A static condition is just a string. If a static condition is evaluated,
- the result depends on whether the condition's value is defined or not.
-
- \param condition Static condition string/value
- */
- void AddCondition(const std::string &condition);
- /*!
- \brief Adds the given dynamic condition.
-
- A dynamic condition has an identifier and an implementation which is
- triggered when the condition is evaluated.
-
- \param identifier Identifier of the dynamic condition
- \param condition Implementation of the dynamic condition
- */
- void AddCondition(const std::string &identifier, SettingConditionCheck condition);
-
-private:
- // implementation of ISettingCallback
- virtual bool OnSettingChanging(const CSetting *setting);
- virtual void OnSettingChanged(const CSetting *setting);
- virtual void OnSettingAction(const CSetting *setting);
- virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode);
- virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName);
-
- // implementation of ISettingsHandler
- virtual bool OnSettingsLoading();
- virtual void OnSettingsLoaded();
- virtual bool OnSettingsSaving() const;
- virtual void OnSettingsSaved() const;
- virtual void OnSettingsCleared();
-
- // implementation of ISubSettings
- virtual bool Load(const TiXmlNode *settings);
-
- bool Serialize(TiXmlNode *parent) const;
- bool Deserialize(const TiXmlNode *node, std::map<std::string, CSetting*> *loadedSettings = NULL);
-
- static bool LoadSetting(const TiXmlNode *node, CSetting *setting);
- bool UpdateSettings(const TiXmlNode *root);
- bool UpdateSetting(const TiXmlNode *node, CSetting *setting, const CSettingUpdate& update);
- void UpdateSettingByDependency(const std::string &settingId, const CSettingDependency &dependency);
-
- typedef enum {
- SettingOptionsFillerTypeNone = 0,
- SettingOptionsFillerTypeInteger,
- SettingOptionsFillerTypeString
- } SettingOptionsFillerType;
-
- void RegisterSettingOptionsFiller(const std::string &identifier, void *filler, SettingOptionsFillerType type);
-
- typedef std::set<ISettingCallback *> CallbackSet;
- typedef struct {
- CSetting *setting;
- SettingDependencyMap dependencies;
- CallbackSet callbacks;
- } Setting;
-
- bool m_initialized;
- bool m_loaded;
-
- typedef std::map<std::string, Setting> SettingMap;
- SettingMap m_settings;
- typedef std::map<std::string, CSettingSection*> SettingSectionMap;
- SettingSectionMap m_sections;
-
- typedef std::map<std::string, ISettingCreator*> SettingCreatorMap;
- SettingCreatorMap m_settingCreators;
-
- typedef std::map<std::string, ISettingControlCreator*> SettingControlCreatorMap;
- SettingControlCreatorMap m_settingControlCreators;
-
- std::set<ISubSettings*> m_subSettings;
- typedef std::vector<ISettingsHandler*> SettingsHandlers;
- SettingsHandlers m_settingsHandlers;
-
- CSettingConditionsManager m_conditions;
-
- typedef struct {
- void *filler;
- SettingOptionsFillerType type;
- } SettingOptionsFiller;
- typedef std::map<std::string, SettingOptionsFiller> SettingOptionsFillerMap;
- SettingOptionsFillerMap m_optionsFillers;
-
- CSharedSection m_critical;
- CSharedSection m_settingsCritical;
-};
#include <map>
#include <string>
-#include "settings/ISubSettings.h"
+#include "settings/lib/ISubSettings.h"
#include "threads/CriticalSection.h"
class TiXmlNode;
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "ISetting.h"
+#include "SettingDefinitions.h"
+#include "utils/log.h"
+#include "utils/XBMCTinyXML.h"
+#include "utils/XMLUtils.h"
+
+using namespace std;
+
+ISetting::ISetting(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : m_id(id),
+ m_settingsManager(settingsManager),
+ m_visible(true),
+ m_meetsRequirements(true),
+ m_requirementCondition(settingsManager)
+{ }
+
+bool ISetting::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ if (node == NULL)
+ return false;
+
+ bool value;
+ if (XMLUtils::GetBoolean(node, SETTING_XML_ELM_VISIBLE, value))
+ m_visible = value;
+
+ const TiXmlNode *requirementNode = node->FirstChild(SETTING_XML_ELM_REQUIREMENT);
+ if (requirementNode == NULL)
+ return true;
+
+ return m_requirementCondition.Deserialize(requirementNode);
+}
+
+bool ISetting::DeserializeIdentification(const TiXmlNode *node, std::string &identification)
+{
+ if (node == NULL)
+ return false;
+
+ const TiXmlElement *element = node->ToElement();
+ if (element == NULL)
+ return false;
+
+ const char *idAttribute = element->Attribute(SETTING_XML_ATTR_ID);
+ if (idAttribute == NULL || strlen(idAttribute) <= 0)
+ return false;
+
+ identification = idAttribute;
+ return true;
+}
+
+void ISetting::CheckRequirements()
+{
+ m_meetsRequirements = m_requirementCondition.Check();
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+#include <string>
+#include <vector>
+
+#include "SettingRequirement.h"
+
+class CSettingsManager;
+class TiXmlNode;
+
+/*!
+ \ingroup settings
+ \brief Interface defining the base of all setting objects
+ */
+class ISetting
+{
+public:
+ /*!
+ \brief Creates a new setting object with the given identifier.
+
+ \param id Identifier of the setting object
+ \param settingsManager Reference to the settings manager
+ */
+ ISetting(const std::string &id, CSettingsManager *settingsManager = NULL);
+ virtual ~ISetting() { }
+
+ /*!
+ \brief Deserializes the given XML node into the properties of the setting
+ object.
+
+ If the update parameter is true, the checks for mandatory properties are
+ skipped and values are only updated.
+
+ \param node XML node containing the properties of the setting object
+ \param update Whether to perform checks for mandatory properties or not
+ \return True if deserialization was successful, false otherwise
+ */
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ /*!
+ \brief Gets the identifier of the setting object.
+
+ \return Identifier of the setting object
+ */
+ const std::string& GetId() const { return m_id; }
+ /*!
+ \brief Whether the setting object is visible or hidden.
+
+ \return True if the setting object is visible, false otherwise
+ */
+ virtual bool IsVisible() const { return m_visible; }
+ /*!
+ \brief Sets the visibility state of the setting object.
+
+ \param visible Whether the setting object shall be visible or not
+ */
+ virtual void SetVisible(bool visible) { m_visible = visible; }
+
+ /*!
+ \brief Whether the setting object meets all necessary requirements.
+
+ \return True if the setting object meets all necessary requirements, false otherwise
+ */
+ virtual bool MeetsRequirements() const { return m_meetsRequirements; }
+ /*!
+ \brief Checks if the setting object meets all necessary requirements.
+ */
+ virtual void CheckRequirements();
+ /*!
+ \brief Sets whether the setting object meets all necessary requirements.
+
+ \param visible Whether the setting object meets all necessary requirements or not
+ */
+ virtual void SetRequirementsMet(bool requirementsMet) { m_meetsRequirements = requirementsMet; }
+
+ /*!
+ \brief Deserializes the given XML node to retrieve a setting object's
+ identifier.
+
+ \param node XML node containing a setting object's identifier
+ \param identification Will contain the deserialized setting object's identifier
+ \return True if a setting object's identifier was deserialized, false otherwise
+ */
+ static bool DeserializeIdentification(const TiXmlNode *node, std::string &identification);
+
+protected:
+ std::string m_id;
+ CSettingsManager *m_settingsManager;
+
+private:
+ bool m_visible;
+ bool m_meetsRequirements;
+ CSettingRequirement m_requirementCondition;
+};
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+class CSetting;
+class TiXmlNode;
+
+class ISettingCallback
+{
+public:
+ virtual ~ISettingCallback() { }
+
+ /*!
+ \brief The value of the given setting is being changed.
+
+ This callback is triggered whenever the value of a setting is being
+ changed. The given CSetting already contains the new value and the handler
+ of the callback has the possibility to allow or revert changing the value
+ of the setting. In case of a revert OnSettingChanging() is called again to
+ inform all listeners that the value change has been reverted.
+
+ \param setting The setting whose value is being changed (already containing the changed value)
+ \return True if the new value is acceptable otherwise false
+ */
+ virtual bool OnSettingChanging(const CSetting *setting) { return true; }
+
+ /*!
+ \brief The value of the given setting has changed.
+
+ This callback is triggered whenever the value of a setting has been
+ successfully changed (i.e. none of the OnSettingChanging() handlers)
+ has reverted the change.
+
+ \param setting The setting whose value has been changed
+ */
+ virtual void OnSettingChanged(const CSetting *setting) { }
+
+ /*!
+ \brief The given setting has been activated.
+
+ This callback is triggered whenever the given setting has been activated.
+ This callback is only fired for CSettingAction settings.
+
+ \param setting The setting which has been activated.
+ */
+ virtual void OnSettingAction(const CSetting *setting) { }
+
+ /*!
+ \brief The given setting needs to be updated.
+
+ This callback is triggered when a setting needs to be updated because its
+ value is outdated. This only happens when initially loading the value of a
+ setting and will not be triggered afterwards.
+
+ \param setting The setting which needs to be updated.
+ \return True if the setting has been successfully updated otherwise false
+ */
+ virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode) { return false; }
+
+ /*!
+ \brief The given property of the given setting has changed
+
+ This callback is triggered when a property (e.g. enabled or the list of
+ dynamic options) has changed.
+
+ \param setting The setting which has a changed property
+ \param propertyName The string representation of the changed property
+ */
+ virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName) { }
+};
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "ISettingControl.h"
+#include "SettingDefinitions.h"
+#include "utils/log.h"
+#include "utils/StringUtils.h"
+#include "utils/XBMCTinyXML.h"
+
+bool ISettingControl::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ if (node == NULL)
+ return false;
+
+ const TiXmlElement *elem = node->ToElement();
+ if (elem == NULL)
+ return false;
+
+ const char *strTmp = elem->Attribute(SETTING_XML_ATTR_FORMAT);
+ std::string format;
+ if (strTmp != NULL)
+ format = strTmp;
+ if (!SetFormat(format))
+ {
+ CLog::Log(LOGERROR, "ISettingControl: error reading \"format\" attribute of <control>");
+ return false;
+ }
+
+ if ((strTmp = elem->Attribute(SETTING_XML_ATTR_DELAYED)) != NULL)
+ {
+ if (!StringUtils::EqualsNoCase(strTmp, "false") && !StringUtils::EqualsNoCase(strTmp, "true"))
+ {
+ CLog::Log(LOGERROR, "ISettingControl: error reading \"delayed\" attribute of <control>");
+ return false;
+ }
+ else
+ m_delayed = StringUtils::EqualsNoCase(strTmp, "true");
+ }
+
+ return true;
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+
+class TiXmlNode;
+
+class ISettingControl
+{
+public:
+ ISettingControl()
+ : m_delayed(false)
+ { }
+ virtual ~ISettingControl() { }
+
+ virtual std::string GetType() const = 0;
+ const std::string& GetFormat() const { return m_format; }
+ bool GetDelayed() const { return m_delayed; }
+
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+protected:
+ virtual bool SetFormat(const std::string &format) { return true; }
+
+ bool m_delayed;
+ std::string m_format;
+};
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+
+class ISettingControl;
+
+/*!
+ \ingroup settings
+ \brief Interface for creating a new setting control of a custom setting control type.
+ */
+class ISettingControlCreator
+{
+public:
+ virtual ~ISettingControlCreator() { }
+
+ /*!
+ \brief Creates a new setting control of the given custom setting control type.
+
+ \param controlType string representation of the setting control type
+ \return A new setting control object of the given (custom) setting control type or NULL if the setting control type is unknown
+ */
+ virtual ISettingControl* CreateControl(const std::string &controlType) const = 0;
+};
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+
+class CSetting;
+class CSettingsManager;
+
+/*!
+ \ingroup settings
+ \brief Interface for creating a new setting of a custom setting type.
+ */
+class ISettingCreator
+{
+public:
+ virtual ~ISettingCreator() { }
+
+ /*!
+ \brief Creates a new setting of the given custom setting type.
+
+ \param settingType string representation of the setting type
+ \param settingId Identifier of the setting to be created
+ \param settingsManager Reference to the settings manager
+ \return A new setting object of the given (custom) setting type or NULL if the setting type is unknown
+ */
+ virtual CSetting* CreateSetting(const std::string &settingType, const std::string &settingId, CSettingsManager *settingsManager = NULL) const = 0;
+};
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/*!
+ \ingroup settings
+ \brief Interface defining methods being called by the settings system if an
+ action is performed on multiple/all settings
+ */
+class ISettingsHandler
+{
+public:
+ virtual ~ISettingsHandler() { }
+
+ /*!
+ \brief Settings loading has been initiated.
+
+ \return True if the settings should be loaded, false if the loading should be aborted.
+ */
+ virtual bool OnSettingsLoading() { return true; }
+ /*!
+ \brief Settings have been loaded.
+
+ This callback can be used to trigger loading other settings.
+ */
+ virtual void OnSettingsLoaded() { }
+ /*!
+ \brief Settings saving has been initiated.
+
+ \return True if the settings should be saved, false if the saving should be aborted.
+ */
+ virtual bool OnSettingsSaving() const { return true; }
+ /*!
+ \brief Settings have been saved.
+
+ This callback can be used to trigger saving other settings.
+ */
+ virtual void OnSettingsSaved() const { }
+ /*!
+ \brief Setting values have been unloaded.
+
+ This callback can be used to trigger uninitializing any state variables
+ (e.g. before re-loading the settings).
+ */
+ virtual void OnSettingsUnloaded() { }
+ /*!
+ \brief Settings have been cleared.
+
+ This callback can be used to trigger clearing any state variables.
+ */
+ virtual void OnSettingsCleared() { }
+};
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+class TiXmlNode;
+
+/*!
+ \ingroup settings
+ \brief Interface defining methods to load additional setting values from an
+ XML file being loaded by the settings system.
+ */
+class ISubSettings
+{
+public:
+ virtual ~ISubSettings() { }
+
+ /*!
+ \brief Load settings from the given XML node.
+
+ \param settings XML node containing setting values
+ \return True if loading the settings was successful, false otherwise.
+ */
+ virtual bool Load(const TiXmlNode *settings) { return true; }
+ /*!
+ \brief Save settings to the given XML node.
+
+ \param settings XML node in which the settings will be saved
+ \return True if saving the settings was successful, false otherwise.
+ */
+ virtual bool Save(TiXmlNode *settings) const { return true; }
+ /*!
+ \brief Clear any loaded setting values.
+ */
+ virtual void Clear() { }
+};
--- /dev/null
+SRCS=ISetting.cpp \
+ ISettingControl.cpp \
+ Setting.cpp \
+ SettingCategoryAccess.cpp \
+ SettingConditions.cpp \
+ SettingDependency.cpp \
+ SettingSection.cpp \
+ SettingsManager.cpp \
+ SettingRequirement.cpp \
+ SettingUpdate.cpp \
+
+LIB=settings_lib.a
+
+include ../../../Makefile.include
+-include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <sstream>
+
+#include "Setting.h"
+#include "SettingDefinitions.h"
+#include "SettingsManager.h"
+#include "utils/log.h"
+#include "utils/StringUtils.h"
+#include "utils/XBMCTinyXML.h"
+#include "utils/XMLUtils.h"
+
+CSetting::CSetting(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : ISetting(id, settingsManager),
+ m_callback(NULL),
+ m_label(-1), m_help(-1),
+ m_level(SettingLevelStandard),
+ m_control(NULL),
+ m_changed(false)
+{ }
+
+CSetting::CSetting(const std::string &id, const CSetting &setting)
+ : ISetting(id, setting.m_settingsManager),
+ m_callback(NULL),
+ m_label(-1), m_help(-1),
+ m_level(SettingLevelStandard),
+ m_control(NULL),
+ m_changed(false)
+{
+ m_id = id;
+ Copy(setting);
+}
+
+CSetting::~CSetting()
+{
+ delete m_control;
+}
+
+bool CSetting::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ // handle <visible> conditions
+ if (!ISetting::Deserialize(node, update))
+ return false;
+
+ const TiXmlElement *element = node->ToElement();
+ if (element == NULL)
+ return false;
+
+ // get the attributes label and help
+ int tmp = -1;
+ if (element->QueryIntAttribute(SETTING_XML_ATTR_LABEL, &tmp) == TIXML_SUCCESS && tmp > 0)
+ m_label = tmp;
+
+ tmp = -1;
+ if (element->QueryIntAttribute(SETTING_XML_ATTR_HELP, &tmp) == TIXML_SUCCESS && tmp > 0)
+ m_help = tmp;
+ const char *parentSetting = element->Attribute(SETTING_XML_ATTR_PARENT);
+ if (parentSetting != NULL)
+ m_parentSetting = parentSetting;
+
+ // get the <level>
+ int level = -1;
+ if (XMLUtils::GetInt(node, SETTING_XML_ELM_LEVEL, level))
+ m_level = (SettingLevel)level;
+
+ if (m_level < (int)SettingLevelBasic || m_level > (int)SettingLevelInternal)
+ m_level = SettingLevelStandard;
+
+ const TiXmlNode *dependencies = node->FirstChild(SETTING_XML_ELM_DEPENDENCIES);
+ if (dependencies != NULL)
+ {
+ const TiXmlNode *dependencyNode = dependencies->FirstChild(SETTING_XML_ELM_DEPENDENCY);
+ while (dependencyNode != NULL)
+ {
+ CSettingDependency dependency(m_settingsManager);
+ if (dependency.Deserialize(dependencyNode))
+ m_dependencies.push_back(dependency);
+ else
+ CLog::Log(LOGWARNING, "CSetting: error reading <dependency> tag of \"%s\"", m_id.c_str());
+
+ dependencyNode = dependencyNode->NextSibling(SETTING_XML_ELM_DEPENDENCY);
+ }
+ }
+
+ const TiXmlElement *control = node->FirstChildElement(SETTING_XML_ELM_CONTROL);
+ if (control != NULL)
+ {
+ const char *controlType = control->Attribute(SETTING_XML_ATTR_TYPE);
+ if (controlType == NULL)
+ {
+ CLog::Log(LOGERROR, "CSetting: error reading \"type\" attribute of <control> tag of \"%s\"", m_id.c_str());
+ return false;
+ }
+
+ m_control = m_settingsManager->CreateControl(controlType);
+ if (m_control == NULL || !m_control->Deserialize(control, update))
+ {
+ CLog::Log(LOGERROR, "CSetting: error reading <control> tag of \"%s\"", m_id.c_str());
+ return false;
+ }
+ }
+ else if (!update && m_level < SettingLevelInternal)
+ {
+ CLog::Log(LOGERROR, "CSetting: missing <control> tag of \"%s\"", m_id.c_str());
+ return false;
+ }
+
+ const TiXmlNode *updates = node->FirstChild(SETTING_XML_ELM_UPDATES);
+ if (updates != NULL)
+ {
+ const TiXmlElement *updateElem = updates->FirstChildElement(SETTING_XML_ELM_UPDATE);
+ while (updateElem != NULL)
+ {
+ CSettingUpdate update;
+ if (update.Deserialize(updateElem))
+ {
+ if (!m_updates.insert(update).second)
+ CLog::Log(LOGWARNING, "CSetting: duplicate <update> definition for \"%s\"", m_id.c_str());
+ }
+ else
+ CLog::Log(LOGWARNING, "CSetting: error reading <update> tag of \"%s\"", m_id.c_str());
+
+ updateElem = updateElem->NextSiblingElement(SETTING_XML_ELM_UPDATE);
+ }
+ }
+
+ return true;
+}
+
+bool CSetting::IsEnabled() const
+{
+ bool enabled = true;
+ for (SettingDependencies::const_iterator depIt = m_dependencies.begin(); depIt != m_dependencies.end(); ++depIt)
+ {
+ if (depIt->GetType() != SettingDependencyTypeEnable)
+ continue;
+
+ if (!depIt->Check())
+ {
+ enabled = false;
+ break;
+ }
+ }
+
+ return enabled;
+}
+
+bool CSetting::IsVisible() const
+{
+ if (!ISetting::IsVisible())
+ return false;
+
+ bool visible = true;
+ for (SettingDependencies::const_iterator depIt = m_dependencies.begin(); depIt != m_dependencies.end(); ++depIt)
+ {
+ if (depIt->GetType() != SettingDependencyTypeVisible)
+ continue;
+
+ if (!depIt->Check())
+ {
+ visible = false;
+ break;
+ }
+ }
+
+ return visible;
+}
+
+bool CSetting::OnSettingChanging(const CSetting *setting)
+{
+ if (m_callback == NULL)
+ return true;
+
+ return m_callback->OnSettingChanging(setting);
+}
+
+void CSetting::OnSettingChanged(const CSetting *setting)
+{
+ if (m_callback == NULL)
+ return;
+
+ m_callback->OnSettingChanged(setting);
+}
+
+void CSetting::OnSettingAction(const CSetting *setting)
+{
+ if (m_callback == NULL)
+ return;
+
+ m_callback->OnSettingAction(setting);
+}
+
+bool CSetting::OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode)
+{
+ if (m_callback == NULL)
+ return false;
+
+ return m_callback->OnSettingUpdate(setting, oldSettingId, oldSettingNode);
+}
+
+void CSetting::OnSettingPropertyChanged(const CSetting *setting, const char *propertyName)
+{
+ if (m_callback == NULL)
+ return;
+
+ m_callback->OnSettingPropertyChanged(setting, propertyName);
+}
+
+void CSetting::Copy(const CSetting &setting)
+{
+ SetVisible(setting.IsVisible());
+ SetRequirementsMet(setting.MeetsRequirements());
+ m_callback = setting.m_callback;
+ m_label = setting.m_label;
+ m_help = setting.m_help;
+ m_level = setting.m_level;
+
+ delete m_control;
+ if (setting.m_control != NULL)
+ {
+ m_control = m_settingsManager->CreateControl(setting.m_control->GetType());
+ *m_control = *setting.m_control;
+ }
+ else
+ m_control = NULL;
+
+ m_dependencies = setting.m_dependencies;
+ m_updates = setting.m_updates;
+ m_changed = setting.m_changed;
+}
+
+CSettingList::CSettingList(const std::string &id, CSetting *settingDefinition, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_definition(settingDefinition),
+ m_delimiter("|"),
+ m_minimum(0), m_maximum(-1)
+{ }
+
+CSettingList::CSettingList(const std::string &id, const CSettingList &setting)
+ : CSetting(id, setting),
+ m_definition(NULL),
+ m_delimiter("|"),
+ m_minimum(0), m_maximum(-1)
+{
+ copy(setting);
+}
+
+CSettingList::~CSettingList()
+{
+ m_values.clear();
+ m_defaults.clear();
+ delete m_definition;
+}
+
+CSetting* CSettingList::Clone(const std::string &id) const
+{
+ if (m_definition == NULL)
+ return NULL;
+
+ return new CSettingList(id, *this);
+}
+
+bool CSettingList::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (m_definition == NULL)
+ return false;
+
+ if (!CSetting::Deserialize(node, update))
+ return false;
+
+ const TiXmlElement *element = node->ToElement();
+ if (element == NULL)
+ {
+ CLog::Log(LOGWARNING, "CSettingList: unable to read type of list setting of %s", m_id.c_str());
+ return false;
+ }
+
+ if (!m_definition->Deserialize(node, update))
+ return false;
+
+ const TiXmlNode *constraints = node->FirstChild(SETTING_XML_ELM_CONSTRAINTS);
+ if (constraints != NULL)
+ {
+ // read the delimiter
+ std::string delimiter;
+ if (XMLUtils::GetString(constraints, SETTING_XML_ELM_DELIMITER, delimiter) && !delimiter.empty())
+ m_delimiter = delimiter;
+
+ XMLUtils::GetInt(constraints, SETTING_XML_ELM_MINIMUM, m_minimum);
+ if (m_minimum < 0)
+ m_minimum = 0;
+ XMLUtils::GetInt(constraints, SETTING_XML_ELM_MAXIMUM, m_maximum);
+ if (m_maximum <= 0)
+ m_maximum = -1;
+ else if (m_maximum < m_minimum)
+ {
+ CLog::Log(LOGWARNING, "CSettingList: invalid <minimum> (%d) and/or <maximum> (%d) of %s", m_minimum, m_maximum, m_id.c_str());
+ return false;
+ }
+ }
+
+ // read the default and initial values
+ std::string values;
+ if (XMLUtils::GetString(node, SETTING_XML_ELM_DEFAULT, values))
+ {
+ if (!fromString(values, m_defaults))
+ {
+ CLog::Log(LOGWARNING, "CSettingList: invalid <default> definition \"%s\" of %s", values.c_str(), m_id.c_str());
+ return false;
+ }
+ Reset();
+ }
+
+ return true;
+}
+
+int CSettingList::GetElementType() const
+{
+ CSharedLock lock(m_critical);
+
+ if (m_definition == NULL)
+ return SettingTypeNone;
+
+ return m_definition->GetType();
+}
+
+bool CSettingList::FromString(const std::string &value)
+{
+ SettingPtrList values;
+ if (!fromString(value, values))
+ return false;
+
+ return SetValue(values);
+}
+
+std::string CSettingList::ToString() const
+{
+ return toString(m_values);
+}
+
+bool CSettingList::Equals(const std::string &value) const
+{
+ SettingPtrList values;
+ if (!fromString(value, values) ||
+ values.size() != m_values.size())
+ return false;
+
+ bool ret = true;
+ for (size_t index = 0; index < values.size(); index++)
+ {
+ if (!m_values[index]->Equals(values[index]->ToString()))
+ {
+ ret = false;
+ break;
+ }
+ }
+
+ return ret;
+}
+
+bool CSettingList::CheckValidity(const std::string &value) const
+{
+ SettingPtrList values;
+ return fromString(value, values);
+}
+
+void CSettingList::Reset()
+{
+ CExclusiveLock lock(m_critical);
+ SettingPtrList values;
+ for (SettingPtrList::const_iterator it = m_defaults.begin(); it != m_defaults.end(); ++it)
+ values.push_back(SettingPtr((*it)->Clone((*it)->GetId())));
+
+ SetValue(values);
+}
+
+bool CSettingList::FromString(const std::vector<std::string> &value)
+{
+ SettingPtrList values;
+ if (!fromValues(value, values))
+ return false;
+
+ return SetValue(values);
+}
+
+bool CSettingList::SetValue(const SettingPtrList &values)
+{
+ CExclusiveLock lock(m_critical);
+
+ if ((int)values.size() < m_minimum ||
+ (m_maximum > 0 && (int)values.size() > m_maximum))
+ return false;
+
+ bool equal = values.size() == m_values.size();
+ for (size_t index = 0; index < values.size(); index++)
+ {
+ if (values[index]->GetType() != GetElementType())
+ return false;
+
+ if (equal &&
+ !values[index]->Equals(m_values[index]->ToString()))
+ equal = false;
+ }
+
+ if (equal)
+ return true;
+
+ SettingPtrList oldValues = m_values;
+ m_values.clear();
+ m_values.insert(m_values.begin(), values.begin(), values.end());
+
+ if (!OnSettingChanging(this))
+ {
+ m_values = oldValues;
+
+ // the setting couldn't be changed because one of the
+ // callback handlers failed the OnSettingChanging()
+ // callback so we need to let all the callback handlers
+ // know that the setting hasn't changed
+ OnSettingChanging(this);
+ return false;
+ }
+
+ m_changed = (toString(m_values) == toString(m_defaults));
+ OnSettingChanged(this);
+ return true;
+}
+
+void CSettingList::SetDefault(const SettingPtrList &values)
+{
+ CExclusiveLock lock(m_critical);
+
+ m_defaults.clear();
+ m_defaults.insert(m_defaults.begin(), values.begin(), values.end());
+
+ if (!m_changed)
+ {
+ m_values.clear();
+ for (SettingPtrList::const_iterator it = m_defaults.begin(); it != m_defaults.end(); ++it)
+ m_values.push_back(SettingPtr((*it)->Clone((*it)->GetId())));
+ }
+}
+
+void CSettingList::copy(const CSettingList &setting)
+{
+ CSetting::Copy(setting);
+
+ copy(setting.m_values, m_values);
+ copy(setting.m_defaults, m_defaults);
+
+ if (setting.m_definition != NULL)
+ {
+ CSetting *definitionCopy = setting.m_definition->Clone(m_id + ".definition");
+ if (definitionCopy != NULL)
+ m_definition = definitionCopy;
+ }
+
+ m_delimiter = setting.m_delimiter;
+ m_minimum = setting.m_minimum;
+ m_maximum = setting.m_maximum;
+}
+
+void CSettingList::copy(const SettingPtrList &srcValues, SettingPtrList &dstValues)
+{
+ dstValues.clear();
+
+ for (SettingPtrList::const_iterator itValue = srcValues.begin(); itValue != srcValues.end(); ++itValue)
+ {
+ if (*itValue == NULL)
+ continue;
+
+ CSetting *valueCopy = (*itValue)->Clone((*itValue)->GetId());
+ if (valueCopy == NULL)
+ continue;
+
+ dstValues.push_back(SettingPtr(valueCopy));
+ }
+}
+
+bool CSettingList::fromString(const std::string &strValue, SettingPtrList &values) const
+{
+ std::vector<std::string> strValues = StringUtils::Split(strValue, m_delimiter);
+ return fromValues(strValues, values);
+}
+
+bool CSettingList::fromValues(const std::vector<std::string> &strValues, SettingPtrList &values) const
+{
+ if ((int)strValues.size() < m_minimum ||
+ (m_maximum > 0 && (int)strValues.size() > m_maximum))
+ return false;
+
+ bool ret = true;
+ int index = 0;
+ for (std::vector<std::string>::const_iterator itValue = strValues.begin(); itValue != strValues.end(); ++itValue)
+ {
+ CSetting *settingValue = m_definition->Clone(StringUtils::Format("%s.%d", m_id.c_str(), index++));
+ if (settingValue == NULL ||
+ !settingValue->FromString(*itValue))
+ {
+ delete settingValue;
+ ret = false;
+ break;
+ }
+
+ values.push_back(SettingPtr(settingValue));
+ }
+
+ if (!ret)
+ values.clear();
+
+ return ret;
+}
+
+std::string CSettingList::toString(const SettingPtrList &values) const
+{
+ std::vector<std::string> strValues;
+ for (SettingPtrList::const_iterator it = values.begin(); it != values.end(); ++it)
+ {
+ if (*it != NULL)
+ strValues.push_back((*it)->ToString());
+ }
+
+ return StringUtils::Join(strValues, m_delimiter);
+}
+
+CSettingBool::CSettingBool(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_value(false), m_default(false)
+{ }
+
+CSettingBool::CSettingBool(const std::string &id, const CSettingBool &setting)
+ : CSetting(id, setting)
+{
+ copy(setting);
+}
+
+CSettingBool::CSettingBool(const std::string &id, int label, bool value, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_value(value), m_default(value)
+{
+ m_label = label;
+}
+
+CSetting* CSettingBool::Clone(const std::string &id) const
+{
+ return new CSettingBool(id, *this);
+}
+
+bool CSettingBool::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (!CSetting::Deserialize(node, update))
+ return false;
+
+ // get the default value
+ bool value;
+ if (XMLUtils::GetBoolean(node, SETTING_XML_ELM_DEFAULT, value))
+ m_value = m_default = value;
+ else if (!update)
+ {
+ CLog::Log(LOGERROR, "CSettingBool: error reading the default value of \"%s\"", m_id.c_str());
+ return false;
+ }
+
+ return true;
+}
+
+bool CSettingBool::FromString(const std::string &value)
+{
+ bool bValue;
+ if (!fromString(value, bValue))
+ return false;
+
+ return SetValue(bValue);
+}
+
+std::string CSettingBool::ToString() const
+{
+ return m_value ? "true" : "false";
+}
+
+bool CSettingBool::Equals(const std::string &value) const
+{
+ bool bValue;
+ return (fromString(value, bValue) && m_value == bValue);
+}
+
+bool CSettingBool::CheckValidity(const std::string &value) const
+{
+ bool bValue;
+ return fromString(value, bValue);
+}
+
+bool CSettingBool::SetValue(bool value)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (value == m_value)
+ return true;
+
+ bool oldValue = m_value;
+ m_value = value;
+
+ if (!OnSettingChanging(this))
+ {
+ m_value = oldValue;
+
+ // the setting couldn't be changed because one of the
+ // callback handlers failed the OnSettingChanging()
+ // callback so we need to let all the callback handlers
+ // know that the setting hasn't changed
+ OnSettingChanging(this);
+ return false;
+ }
+
+ m_changed = m_value != m_default;
+ OnSettingChanged(this);
+ return true;
+}
+
+void CSettingBool::SetDefault(bool value)
+{
+ CExclusiveLock lock(m_critical);
+
+ m_default = value;
+ if (!m_changed)
+ m_value = m_default;
+}
+
+void CSettingBool::copy(const CSettingBool &setting)
+{
+ CSetting::Copy(setting);
+
+ m_value = setting.m_value;
+ m_default = setting.m_default;
+}
+
+bool CSettingBool::fromString(const std::string &strValue, bool &value) const
+{
+ if (StringUtils::EqualsNoCase(strValue, "true"))
+ {
+ value = true;
+ return true;
+ }
+ if (StringUtils::EqualsNoCase(strValue, "false"))
+ {
+ value = false;
+ return true;
+ }
+
+ return false;
+}
+
+CSettingInt::CSettingInt(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_value(0), m_default(0),
+ m_min(0), m_step(1), m_max(0)
+{ }
+
+CSettingInt::CSettingInt(const std::string &id, const CSettingInt &setting)
+ : CSetting(id, setting)
+{
+ copy(setting);
+}
+
+CSettingInt::CSettingInt(const std::string &id, int label, int value, int minimum, int step, int maximum, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_value(value), m_default(value),
+ m_min(minimum), m_step(step), m_max(maximum)
+{
+ m_label = label;
+}
+
+CSettingInt::CSettingInt(const std::string &id, int label, int value, const StaticIntegerSettingOptions &options, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_value(value), m_default(value),
+ m_min(0), m_step(1), m_max(0),
+ m_options(options)
+{
+ m_label = label;
+}
+
+CSetting* CSettingInt::Clone(const std::string &id) const
+{
+ return new CSettingInt(id, *this);
+}
+
+bool CSettingInt::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (!CSetting::Deserialize(node, update))
+ return false;
+
+ // get the default value
+ int value;
+ if (XMLUtils::GetInt(node, SETTING_XML_ELM_DEFAULT, value))
+ m_value = m_default = value;
+ else if (!update)
+ {
+ CLog::Log(LOGERROR, "CSettingInt: error reading the default value of \"%s\"", m_id.c_str());
+ return false;
+ }
+
+ const TiXmlNode *constraints = node->FirstChild(SETTING_XML_ELM_CONSTRAINTS);
+ if (constraints != NULL)
+ {
+ // get the entries
+ const TiXmlNode *options = constraints->FirstChild(SETTING_XML_ELM_OPTIONS);
+ if (options != NULL && options->FirstChild() != NULL)
+ {
+ if (options->FirstChild()->Type() == TiXmlNode::TINYXML_TEXT)
+ m_optionsFiller = options->FirstChild()->ValueStr();
+ else
+ {
+ m_options.clear();
+ const TiXmlElement *optionElement = options->FirstChildElement(SETTING_XML_ELM_OPTION);
+ while (optionElement != NULL)
+ {
+ std::pair<int, int> entry;
+ if (optionElement->QueryIntAttribute(SETTING_XML_ATTR_LABEL, &entry.first) == TIXML_SUCCESS && entry.first > 0)
+ {
+ entry.second = strtol(optionElement->FirstChild()->Value(), NULL, 10);
+ m_options.push_back(entry);
+ }
+
+ optionElement = optionElement->NextSiblingElement(SETTING_XML_ELM_OPTION);
+ }
+ }
+ }
+
+ // get minimum
+ XMLUtils::GetInt(constraints, SETTING_XML_ELM_MINIMUM, m_min);
+ // get step
+ XMLUtils::GetInt(constraints, SETTING_XML_ELM_STEP, m_step);
+ // get maximum
+ XMLUtils::GetInt(constraints, SETTING_XML_ELM_MAXIMUM, m_max);
+ }
+
+ return true;
+}
+
+bool CSettingInt::FromString(const std::string &value)
+{
+ int iValue;
+ if (!fromString(value, iValue))
+ return false;
+
+ return SetValue(iValue);
+}
+
+std::string CSettingInt::ToString() const
+{
+ std::ostringstream oss;
+ oss << m_value;
+
+ return oss.str();
+}
+
+bool CSettingInt::Equals(const std::string &value) const
+{
+ int iValue;
+ return (fromString(value, iValue) && m_value == iValue);
+}
+
+bool CSettingInt::CheckValidity(const std::string &value) const
+{
+ int iValue;
+ if (!fromString(value, iValue))
+ return false;
+
+ return CheckValidity(iValue);
+}
+
+bool CSettingInt::CheckValidity(int value) const
+{
+ if (!m_options.empty())
+ {
+ //if the setting is an std::map, check if we got a valid value before assigning it
+ bool ok = false;
+ for (StaticIntegerSettingOptions::const_iterator it = m_options.begin(); it != m_options.end(); ++it)
+ {
+ if (it->second == value)
+ {
+ ok = true;
+ break;
+ }
+ }
+
+ if (!ok)
+ return false;
+ }
+ else if (m_optionsFiller.empty() && m_min != m_max &&
+ (value < m_min || value > m_max))
+ return false;
+
+ return true;
+}
+
+bool CSettingInt::SetValue(int value)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (value == m_value)
+ return true;
+
+ if (!CheckValidity(value))
+ return false;
+
+ int oldValue = m_value;
+ m_value = value;
+
+ if (!OnSettingChanging(this))
+ {
+ m_value = oldValue;
+
+ // the setting couldn't be changed because one of the
+ // callback handlers failed the OnSettingChanging()
+ // callback so we need to let all the callback handlers
+ // know that the setting hasn't changed
+ OnSettingChanging(this);
+ return false;
+ }
+
+ m_changed = m_value != m_default;
+ OnSettingChanged(this);
+ return true;
+}
+
+void CSettingInt::SetDefault(int value)
+{
+ CExclusiveLock lock(m_critical);
+
+ m_default = value;
+ if (!m_changed)
+ m_value = m_default;
+}
+
+SettingOptionsType CSettingInt::GetOptionsType() const
+{
+ CSharedLock lock(m_critical);
+ if (!m_options.empty())
+ return SettingOptionsTypeStatic;
+ if (!m_optionsFiller.empty())
+ return SettingOptionsTypeDynamic;
+
+ return SettingOptionsTypeNone;
+}
+
+DynamicIntegerSettingOptions CSettingInt::UpdateDynamicOptions()
+{
+ CExclusiveLock lock(m_critical);
+ DynamicIntegerSettingOptions options;
+ if (m_optionsFiller.empty() || m_settingsManager == NULL)
+ return options;
+
+ IntegerSettingOptionsFiller filler = (IntegerSettingOptionsFiller)m_settingsManager->GetSettingOptionsFiller(this);
+ if (filler == NULL)
+ return options;
+
+ int bestMatchingValue = m_value;
+ filler(this, options, bestMatchingValue);
+
+ if (bestMatchingValue != m_value)
+ SetValue(bestMatchingValue);
+
+ bool changed = m_dynamicOptions.size() != options.size();
+ if (!changed)
+ {
+ for (size_t index = 0; index < options.size(); index++)
+ {
+ if (options[index].first.compare(m_dynamicOptions[index].first) != 0 ||
+ options[index].second != m_dynamicOptions[index].second)
+ {
+ changed = true;
+ break;
+ }
+ }
+ }
+
+ if (changed)
+ {
+ m_dynamicOptions = options;
+ OnSettingPropertyChanged(this, "options");
+ }
+
+ return options;
+}
+
+void CSettingInt::copy(const CSettingInt &setting)
+{
+ CSetting::Copy(setting);
+
+ CExclusiveLock lock(m_critical);
+
+ m_value = setting.m_value;
+ m_default = setting.m_default;
+ m_min = setting.m_min;
+ m_step = setting.m_step;
+ m_max = setting.m_max;
+ m_options = setting.m_options;
+ m_optionsFiller = setting.m_optionsFiller;
+}
+
+bool CSettingInt::fromString(const std::string &strValue, int &value)
+{
+ if (strValue.empty())
+ return false;
+
+ char *end = NULL;
+ value = (int)strtol(strValue.c_str(), &end, 10);
+ if (end != NULL && *end != '\0')
+ return false;
+
+ return true;
+}
+
+CSettingNumber::CSettingNumber(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_value(0.0), m_default(0.0),
+ m_min(0.0), m_step(1.0), m_max(0.0)
+{ }
+
+CSettingNumber::CSettingNumber(const std::string &id, const CSettingNumber &setting)
+ : CSetting(id, setting)
+{
+ copy(setting);
+}
+
+CSettingNumber::CSettingNumber(const std::string &id, int label, float value, float minimum, float step, float maximum, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_value(value), m_default(value),
+ m_min(minimum), m_step(step), m_max(maximum)
+{
+ m_label = label;
+}
+
+CSetting* CSettingNumber::Clone(const std::string &id) const
+{
+ return new CSettingNumber(id, *this);
+}
+
+bool CSettingNumber::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (!CSetting::Deserialize(node, update))
+ return false;
+
+ // get the default value
+ double value;
+ if (XMLUtils::GetDouble(node, SETTING_XML_ELM_DEFAULT, value))
+ m_value = m_default = value;
+ else if (!update)
+ {
+ CLog::Log(LOGERROR, "CSettingNumber: error reading the default value of \"%s\"", m_id.c_str());
+ return false;
+ }
+
+ const TiXmlNode *constraints = node->FirstChild(SETTING_XML_ELM_CONSTRAINTS);
+ if (constraints != NULL)
+ {
+ // get the minimum value
+ XMLUtils::GetDouble(constraints, SETTING_XML_ELM_MINIMUM, m_min);
+ // get the step value
+ XMLUtils::GetDouble(constraints, SETTING_XML_ELM_STEP, m_step);
+ // get the maximum value
+ XMLUtils::GetDouble(constraints, SETTING_XML_ELM_MAXIMUM, m_max);
+ }
+
+ return true;
+}
+
+bool CSettingNumber::FromString(const std::string &value)
+{
+ double dValue;
+ if (!fromString(value, dValue))
+ return false;
+
+ return SetValue(dValue);
+}
+
+std::string CSettingNumber::ToString() const
+{
+ std::ostringstream oss;
+ oss << m_value;
+
+ return oss.str();
+}
+
+bool CSettingNumber::Equals(const std::string &value) const
+{
+ double dValue;
+ CSharedLock lock(m_critical);
+ return (fromString(value, dValue) && m_value == dValue);
+}
+
+bool CSettingNumber::CheckValidity(const std::string &value) const
+{
+ double dValue;
+ if (!fromString(value, dValue))
+ return false;
+
+ return CheckValidity(dValue);
+}
+
+bool CSettingNumber::CheckValidity(double value) const
+{
+ CSharedLock lock(m_critical);
+ if (m_min != m_max &&
+ (value < m_min || value > m_max))
+ return false;
+
+ return true;
+}
+
+bool CSettingNumber::SetValue(double value)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (value == m_value)
+ return true;
+
+ if (!CheckValidity(value))
+ return false;
+
+ double oldValue = m_value;
+ m_value = value;
+
+ if (!OnSettingChanging(this))
+ {
+ m_value = oldValue;
+
+ // the setting couldn't be changed because one of the
+ // callback handlers failed the OnSettingChanging()
+ // callback so we need to let all the callback handlers
+ // know that the setting hasn't changed
+ OnSettingChanging(this);
+ return false;
+ }
+
+ m_changed = m_value != m_default;
+ OnSettingChanged(this);
+ return true;
+}
+
+void CSettingNumber::SetDefault(double value)
+{
+ CExclusiveLock lock(m_critical);
+
+ m_default = value;
+ if (!m_changed)
+ m_value = m_default;
+}
+
+void CSettingNumber::copy(const CSettingNumber &setting)
+{
+ CSetting::Copy(setting);
+ CExclusiveLock lock(m_critical);
+
+ m_value = setting.m_value;
+ m_default = setting.m_default;
+ m_min = setting.m_min;
+ m_step = setting.m_step;
+ m_max = setting.m_max;
+}
+
+bool CSettingNumber::fromString(const std::string &strValue, double &value)
+{
+ if (strValue.empty())
+ return false;
+
+ char *end = NULL;
+ value = (int)strtod(strValue.c_str(), &end);
+ if (end != NULL && *end != '\0')
+ return false;
+
+ return true;
+}
+
+CSettingString::CSettingString(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_allowEmpty(false)
+{ }
+
+CSettingString::CSettingString(const std::string &id, const CSettingString &setting)
+ : CSetting(id, setting)
+{
+ copy(setting);
+}
+
+CSettingString::CSettingString(const std::string &id, int label, const std::string &value, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager),
+ m_value(value), m_default(value),
+ m_allowEmpty(false)
+{
+ m_label = label;
+}
+
+CSetting* CSettingString::Clone(const std::string &id) const
+{
+ return new CSettingString(id, *this);
+}
+
+bool CSettingString::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (!CSetting::Deserialize(node, update))
+ return false;
+
+ const TiXmlNode *constraints = node->FirstChild(SETTING_XML_ELM_CONSTRAINTS);
+ if (constraints != NULL)
+ {
+ // get allowempty (needs to be parsed before parsing the default value)
+ XMLUtils::GetBoolean(constraints, SETTING_XML_ELM_ALLOWEMPTY, m_allowEmpty);
+
+ // get the entries
+ const TiXmlNode *options = constraints->FirstChild(SETTING_XML_ELM_OPTIONS);
+ if (options != NULL && options->FirstChild() != NULL &&
+ options->FirstChild()->Type() == TiXmlNode::TINYXML_TEXT)
+ m_optionsFiller = options->FirstChild()->ValueStr();
+ }
+
+ // get the default value
+ CStdString value;
+ if (XMLUtils::GetString(node, SETTING_XML_ELM_DEFAULT, value) && !value.empty())
+ m_value = m_default = value;
+ else if (!update && !m_allowEmpty)
+ {
+ CLog::Log(LOGERROR, "CSettingString: error reading the default value of \"%s\"", m_id.c_str());
+ return false;
+ }
+
+ return true;
+}
+
+bool CSettingString::CheckValidity(const std::string &value) const
+{
+ CSharedLock lock(m_critical);
+ if (!m_allowEmpty && value.empty())
+ return false;
+
+ return true;
+}
+
+bool CSettingString::SetValue(const std::string &value)
+{
+ CExclusiveLock lock(m_critical);
+
+ if (value == m_value)
+ return true;
+
+ if (!CheckValidity(value))
+ return false;
+
+ std::string oldValue = m_value;
+ m_value = value;
+
+ if (!OnSettingChanging(this))
+ {
+ m_value = oldValue;
+
+ // the setting couldn't be changed because one of the
+ // callback handlers failed the OnSettingChanging()
+ // callback so we need to let all the callback handlers
+ // know that the setting hasn't changed
+ OnSettingChanging(this);
+ return false;
+ }
+
+ m_changed = m_value != m_default;
+ OnSettingChanged(this);
+ return true;
+}
+
+void CSettingString::SetDefault(const std::string &value)
+{
+ CSharedLock lock(m_critical);
+
+ m_default = value;
+ if (!m_changed)
+ m_value = m_default;
+}
+
+SettingOptionsType CSettingString::GetOptionsType() const
+{
+ CSharedLock lock(m_critical);
+ if (!m_optionsFiller.empty())
+ return SettingOptionsTypeDynamic;
+
+ return SettingOptionsTypeNone;
+}
+
+DynamicStringSettingOptions CSettingString::UpdateDynamicOptions()
+{
+ CExclusiveLock lock(m_critical);
+ DynamicStringSettingOptions options;
+ if (m_optionsFiller.empty() || m_settingsManager == NULL)
+ return options;
+
+ StringSettingOptionsFiller filler = (StringSettingOptionsFiller)m_settingsManager->GetSettingOptionsFiller(this);
+ if (filler == NULL)
+ return options;
+
+ std::string bestMatchingValue = m_value;
+ filler(this, options, bestMatchingValue);
+
+ if (bestMatchingValue != m_value)
+ SetValue(bestMatchingValue);
+
+ // check if the list of items has changed
+ bool changed = m_dynamicOptions.size() != options.size();
+ if (!changed)
+ {
+ for (size_t index = 0; index < options.size(); index++)
+ {
+ if (options[index].first.compare(m_dynamicOptions[index].first) != 0 ||
+ options[index].second.compare(m_dynamicOptions[index].second) != 0)
+ {
+ changed = true;
+ break;
+ }
+ }
+ }
+
+ if (changed)
+ {
+ m_dynamicOptions = options;
+ OnSettingPropertyChanged(this, "options");
+ }
+
+ return options;
+}
+
+void CSettingString::copy(const CSettingString &setting)
+{
+ CSetting::Copy(setting);
+
+ CExclusiveLock lock(m_critical);
+ m_value = setting.m_value;
+ m_default = setting.m_default;
+ m_allowEmpty = setting.m_allowEmpty;
+}
+
+CSettingAction::CSettingAction(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : CSetting(id, settingsManager)
+{ }
+
+CSettingAction::CSettingAction(const std::string &id, const CSettingAction &setting)
+ : CSetting(id, setting)
+{ }
+
+CSetting* CSettingAction::Clone(const std::string &id) const
+{
+ return new CSettingAction(id, *this);
+}
+
+bool CSettingAction::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ CSharedLock lock(m_critical);
+
+ if (!CSetting::Deserialize(node, update))
+ return false;
+
+ return true;
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+
+#include <boost/shared_ptr.hpp>
+
+#include "ISetting.h"
+#include "ISettingCallback.h"
+#include "ISettingControl.h"
+#include "SettingDependency.h"
+#include "SettingUpdate.h"
+#include "threads/SharedSection.h"
+
+/*!
+ \ingroup settings
+ \brief Basic setting types available in the settings system.
+ */
+typedef enum {
+ SettingTypeNone = 0,
+ SettingTypeBool,
+ SettingTypeInteger,
+ SettingTypeNumber,
+ SettingTypeString,
+ SettingTypeAction,
+ SettingTypeList
+} SettingType;
+
+/*!
+ \ingroup settings
+ \brief Levels which every setting is assigned to.
+ */
+typedef enum {
+ SettingLevelBasic = 0,
+ SettingLevelStandard,
+ SettingLevelAdvanced,
+ SettingLevelExpert,
+ SettingLevelInternal
+} SettingLevel;
+
+typedef enum {
+ SettingOptionsTypeNone = 0,
+ SettingOptionsTypeStatic,
+ SettingOptionsTypeDynamic
+} SettingOptionsType;
+
+typedef std::pair<int, int> StaticIntegerSettingOption;
+typedef std::vector<StaticIntegerSettingOption> StaticIntegerSettingOptions;
+typedef std::pair<std::string, int> DynamicIntegerSettingOption;
+typedef std::vector<DynamicIntegerSettingOption> DynamicIntegerSettingOptions;
+typedef std::pair<std::string, std::string> DynamicStringSettingOption;
+typedef std::vector<DynamicStringSettingOption> DynamicStringSettingOptions;
+
+/*!
+ \ingroup settings
+ \brief Setting base class containing all the properties which are common to
+ all settings independent of the setting type.
+ */
+class CSetting : public ISetting,
+ protected ISettingCallback
+{
+public:
+ CSetting(const std::string &id, CSettingsManager *settingsManager = NULL);
+ CSetting(const std::string &id, const CSetting &setting);
+ virtual ~CSetting();
+
+ virtual CSetting* Clone(const std::string &id) const = 0;
+
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ virtual int GetType() const = 0;
+ virtual bool FromString(const std::string &value) = 0;
+ virtual std::string ToString() const = 0;
+ virtual bool Equals(const std::string &value) const = 0;
+ virtual bool CheckValidity(const std::string &value) const = 0;
+ virtual void Reset() = 0;
+
+ int GetLabel() const { return m_label; }
+ void SetLabel(int label) { m_label = label; }
+ int GetHelp() const { return m_help; }
+ void SetHelp(int help) { m_help = help; }
+ bool IsEnabled() const;
+ const std::string& GetParent() const { return m_parentSetting; }
+ SettingLevel GetLevel() const { return m_level; }
+ const ISettingControl* GetControl() const { return m_control; }
+ void SetControl(ISettingControl* control) { m_control = control; }
+ const SettingDependencies& GetDependencies() const { return m_dependencies; }
+ const std::set<CSettingUpdate>& GetUpdates() const { return m_updates; }
+
+ // overrides of ISetting
+ virtual bool IsVisible() const;
+
+protected:
+ friend class CSettingsManager;
+
+ virtual bool OnSettingChanging(const CSetting *setting);
+ virtual void OnSettingChanged(const CSetting *setting);
+ virtual void OnSettingAction(const CSetting *setting);
+ virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode);
+ virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName);
+
+ void Copy(const CSetting &setting);
+
+ ISettingCallback *m_callback;
+ int m_label;
+ int m_help;
+ std::string m_parentSetting;
+ SettingLevel m_level;
+ ISettingControl *m_control;
+ SettingDependencies m_dependencies;
+ std::set<CSettingUpdate> m_updates;
+ bool m_changed;
+ CSharedSection m_critical;
+};
+
+typedef boost::shared_ptr<CSetting> SettingPtr;
+
+typedef std::vector<CSetting *> SettingList;
+typedef std::vector<SettingPtr> SettingPtrList;
+
+/*!
+ \ingroup settings
+ \brief List setting implementation
+ \sa CSetting
+ */
+class CSettingList : public CSetting
+{
+public:
+ CSettingList(const std::string &id, CSetting *settingDefinition, CSettingsManager *settingsManager = NULL);
+ CSettingList(const std::string &id, const CSettingList &setting);
+ virtual ~CSettingList();
+
+ virtual CSetting* Clone(const std::string &id) const;
+
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ virtual int GetType() const { return SettingTypeList; }
+ virtual bool FromString(const std::string &value);
+ virtual std::string ToString() const;
+ virtual bool Equals(const std::string &value) const;
+ virtual bool CheckValidity(const std::string &value) const;
+ virtual void Reset();
+
+ int GetElementType() const;
+ const CSetting* GetDefinition() const { return m_definition; }
+
+ const std::string& GetDelimiter() const { return m_delimiter; }
+ int GetMinimum() const { return m_minimum; }
+ int GetMaximum() const { return m_maximum; }
+
+ bool FromString(const std::vector<std::string> &value);
+
+ const SettingPtrList& GetValue() const { return m_values; }
+ bool SetValue(const SettingPtrList &values);
+ const SettingPtrList& GetDefault() const { return m_defaults; }
+ void SetDefault(const SettingPtrList &values);
+
+protected:
+ void copy(const CSettingList &setting);
+ static void copy(const SettingPtrList &srcValues, SettingPtrList &dstValues);
+ bool fromString(const std::string &strValue, SettingPtrList &values) const;
+ bool fromValues(const std::vector<std::string> &strValues, SettingPtrList &values) const;
+ std::string toString(const SettingPtrList &values) const;
+
+ SettingPtrList m_values;
+ SettingPtrList m_defaults;
+ CSetting *m_definition;
+ std::string m_delimiter;
+ int m_minimum;
+ int m_maximum;
+};
+
+/*!
+ \ingroup settings
+ \brief Boolean setting implementation.
+ \sa CSetting
+ */
+class CSettingBool : public CSetting
+{
+public:
+ CSettingBool(const std::string &id, CSettingsManager *settingsManager = NULL);
+ CSettingBool(const std::string &id, const CSettingBool &setting);
+ CSettingBool(const std::string &id, int label, bool value, CSettingsManager *settingsManager = NULL);
+ virtual ~CSettingBool() { }
+
+ virtual CSetting* Clone(const std::string &id) const;
+
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ virtual int GetType() const { return SettingTypeBool; }
+ virtual bool FromString(const std::string &value);
+ virtual std::string ToString() const;
+ virtual bool Equals(const std::string &value) const;
+ virtual bool CheckValidity(const std::string &value) const;
+ virtual void Reset() { SetValue(m_default); }
+
+ bool GetValue() const { CSharedLock lock(m_critical); return m_value; }
+ bool SetValue(bool value);
+ bool GetDefault() const { return m_default; }
+ void SetDefault(bool value);
+
+private:
+ void copy(const CSettingBool &setting);
+ bool fromString(const std::string &strValue, bool &value) const;
+
+ bool m_value;
+ bool m_default;
+};
+
+/*!
+ \ingroup settings
+ \brief Integer setting implementation
+ \sa CSetting
+ */
+class CSettingInt : public CSetting
+{
+public:
+ CSettingInt(const std::string &id, CSettingsManager *settingsManager = NULL);
+ CSettingInt(const std::string &id, const CSettingInt &setting);
+ CSettingInt(const std::string &id, int label, int value, int minimum, int step, int maximum, CSettingsManager *settingsManager = NULL);
+ CSettingInt(const std::string &id, int label, int value, const StaticIntegerSettingOptions &options, CSettingsManager *settingsManager = NULL);
+ virtual ~CSettingInt() { }
+
+ virtual CSetting* Clone(const std::string &id) const;
+
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ virtual int GetType() const { return SettingTypeInteger; }
+ virtual bool FromString(const std::string &value);
+ virtual std::string ToString() const;
+ virtual bool Equals(const std::string &value) const;
+ virtual bool CheckValidity(const std::string &value) const;
+ virtual bool CheckValidity(int value) const;
+ virtual void Reset() { SetValue(m_default); }
+
+ int GetValue() const { CSharedLock lock(m_critical); return m_value; }
+ bool SetValue(int value);
+ int GetDefault() const { return m_default; }
+ void SetDefault(int value);
+
+ int GetMinimum() const { return m_min; }
+ int GetStep() const { return m_step; }
+ int GetMaximum() const { return m_max; }
+
+ SettingOptionsType GetOptionsType() const;
+ const StaticIntegerSettingOptions& GetOptions() const { return m_options; }
+ const std::string& GetOptionsFiller() const { return m_optionsFiller; }
+ DynamicIntegerSettingOptions UpdateDynamicOptions();
+
+private:
+ void copy(const CSettingInt &setting);
+ static bool fromString(const std::string &strValue, int &value);
+
+ int m_value;
+ int m_default;
+ int m_min;
+ int m_step;
+ int m_max;
+ StaticIntegerSettingOptions m_options;
+ std::string m_optionsFiller;
+ DynamicIntegerSettingOptions m_dynamicOptions;
+};
+
+/*!
+ \ingroup settings
+ \brief Real number setting implementation.
+ \sa CSetting
+ */
+class CSettingNumber : public CSetting
+{
+public:
+ CSettingNumber(const std::string &id, CSettingsManager *settingsManager = NULL);
+ CSettingNumber(const std::string &id, const CSettingNumber &setting);
+ CSettingNumber(const std::string &id, int label, float value, float minimum, float step, float maximum, CSettingsManager *settingsManager = NULL);
+ virtual ~CSettingNumber() { }
+
+ virtual CSetting* Clone(const std::string &id) const;
+
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ virtual int GetType() const { return SettingTypeNumber; }
+ virtual bool FromString(const std::string &value);
+ virtual std::string ToString() const;
+ virtual bool Equals(const std::string &value) const;
+ virtual bool CheckValidity(const std::string &value) const;
+ virtual bool CheckValidity(double value) const;
+ virtual void Reset() { SetValue(m_default); }
+
+ double GetValue() const { CSharedLock lock(m_critical); return m_value; }
+ bool SetValue(double value);
+ double GetDefault() const { return m_default; }
+ void SetDefault(double value);
+
+ double GetMinimum() const { return m_min; }
+ double GetStep() const { return m_step; }
+ double GetMaximum() const { return m_max; }
+
+private:
+ virtual void copy(const CSettingNumber &setting);
+ static bool fromString(const std::string &strValue, double &value);
+
+ double m_value;
+ double m_default;
+ double m_min;
+ double m_step;
+ double m_max;
+};
+
+/*!
+ \ingroup settings
+ \brief String setting implementation.
+ \sa CSetting
+ */
+class CSettingString : public CSetting
+{
+public:
+ CSettingString(const std::string &id, CSettingsManager *settingsManager = NULL);
+ CSettingString(const std::string &id, const CSettingString &setting);
+ CSettingString(const std::string &id, int label, const std::string &value, CSettingsManager *settingsManager = NULL);
+ virtual ~CSettingString() { }
+
+ virtual CSetting* Clone(const std::string &id) const;
+
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ virtual int GetType() const { return SettingTypeString; }
+ virtual bool FromString(const std::string &value) { return SetValue(value); }
+ virtual std::string ToString() const { return m_value; }
+ virtual bool Equals(const std::string &value) const { return m_value == value; }
+ virtual bool CheckValidity(const std::string &value) const;
+ virtual void Reset() { SetValue(m_default); }
+
+ virtual const std::string& GetValue() const { CSharedLock lock(m_critical); return m_value; }
+ virtual bool SetValue(const std::string &value);
+ virtual const std::string& GetDefault() const { return m_default; }
+ virtual void SetDefault(const std::string &value);
+
+ virtual bool AllowEmpty() const { return m_allowEmpty; }
+
+ SettingOptionsType GetOptionsType() const;
+ const std::string& GetOptionsFiller() const { return m_optionsFiller; }
+ DynamicStringSettingOptions UpdateDynamicOptions();
+
+protected:
+ virtual void copy(const CSettingString &setting);
+
+ std::string m_value;
+ std::string m_default;
+ bool m_allowEmpty;
+ std::string m_optionsFiller;
+ DynamicStringSettingOptions m_dynamicOptions;
+};
+
+/*!
+ \ingroup settings
+ \brief Action setting implementation.
+
+ A setting action will trigger a call to the OnSettingAction() callback method
+ when activated.
+
+ \sa CSetting
+ */
+class CSettingAction : public CSetting
+{
+public:
+ CSettingAction(const std::string &id, CSettingsManager *settingsManager = NULL);
+ CSettingAction(const std::string &id, const CSettingAction &setting);
+ virtual ~CSettingAction() { }
+
+ virtual CSetting* Clone(const std::string &id) const;
+
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ virtual int GetType() const { return SettingTypeAction; }
+ virtual bool FromString(const std::string &value) { return false; }
+ virtual std::string ToString() const { return ""; }
+ virtual bool Equals(const std::string &value) const { return false; }
+ virtual bool CheckValidity(const std::string &value) const { return false; }
+ virtual void Reset() { }
+
+ // this needs to be public so it can be triggered when activated
+ // by the user in the GUI.
+ virtual void OnSettingAction(const CSetting *setting) { return CSetting::OnSettingAction(this); }
+};
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "SettingCategoryAccess.h"
+#include "SettingConditions.h"
+#include "SettingsManager.h"
+#include "utils/log.h"
+
+bool CSettingCategoryAccessCondition::Check() const
+{
+ if (m_value.empty())
+ return true;
+
+ if (m_settingsManager == NULL)
+ return false;
+
+ bool found = m_settingsManager->GetConditions().Check(m_value, "true");
+ if (m_negated)
+ return !found;
+
+ return found;
+}
+
+bool CSettingCategoryAccessConditionCombination::Check() const
+{
+ if (m_operations.empty() && m_values.empty())
+ return true;
+
+ return CSettingConditionCombination::Check();
+}
+
+CSettingCategoryAccess::CSettingCategoryAccess(CSettingsManager *settingsManager /* = NULL */)
+ : CSettingCondition(settingsManager)
+{
+ m_operation = CBooleanLogicOperationPtr(new CSettingCategoryAccessConditionCombination(m_settingsManager));
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <set>
+#include <string>
+
+#include "SettingConditions.h"
+
+class CSettingCategoryAccessCondition : public CSettingConditionItem
+{
+public:
+ CSettingCategoryAccessCondition(CSettingsManager *settingsManager = NULL)
+ : CSettingConditionItem(settingsManager)
+ { }
+ virtual ~CSettingCategoryAccessCondition() { }
+
+ virtual bool Check() const;
+};
+
+class CSettingCategoryAccessConditionCombination : public CSettingConditionCombination
+{
+public:
+ CSettingCategoryAccessConditionCombination(CSettingsManager *settingsManager = NULL)
+ : CSettingConditionCombination(settingsManager)
+ { }
+ virtual ~CSettingCategoryAccessConditionCombination() { }
+
+ virtual bool Check() const;
+
+private:
+ virtual CBooleanLogicOperation* newOperation() { return new CSettingCategoryAccessConditionCombination(m_settingsManager); }
+ virtual CBooleanLogicValue* newValue() { return new CSettingCategoryAccessCondition(m_settingsManager); }
+};
+
+class CSettingCategoryAccess : public CSettingCondition
+{
+public:
+ CSettingCategoryAccess(CSettingsManager *settingsManager = NULL);
+ virtual ~CSettingCategoryAccess() { }
+};
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "SettingConditions.h"
+#include "SettingDefinitions.h"
+#include "SettingsManager.h"
+#include "utils/StringUtils.h"
+#include "utils/XBMCTinyXML.h"
+
+bool CSettingConditionItem::Deserialize(const TiXmlNode *node)
+{
+ if (!CBooleanLogicValue::Deserialize(node))
+ return false;
+
+ const TiXmlElement *elem = node->ToElement();
+ if (elem == NULL)
+ return false;
+
+ // get the "name" attribute
+ const char *strAttribute = elem->Attribute(SETTING_XML_ATTR_NAME);
+ if (strAttribute != NULL)
+ m_name = strAttribute;
+
+ // get the "setting" attribute
+ strAttribute = elem->Attribute(SETTING_XML_ATTR_SETTING);
+ if (strAttribute != NULL)
+ m_setting = strAttribute;
+
+ return true;
+}
+
+bool CSettingConditionItem::Check() const
+{
+ if (m_settingsManager == NULL)
+ return false;
+
+ return m_settingsManager->GetConditions().Check(m_name, m_value, m_setting) == !m_negated;
+}
+
+bool CSettingConditionCombination::Check() const
+{
+ bool ok = false;
+ for (CBooleanLogicOperations::const_iterator operation = m_operations.begin();
+ operation != m_operations.end(); ++operation)
+ {
+ if (*operation == NULL)
+ continue;
+
+ CSettingConditionCombination *combination = static_cast<CSettingConditionCombination*>((*operation).get());
+ if (combination == NULL)
+ continue;
+
+ if (combination->Check())
+ ok = true;
+ else if (m_operation == BooleanLogicOperationAnd)
+ return false;
+ }
+
+ for (CBooleanLogicValues::const_iterator value = m_values.begin();
+ value != m_values.end(); ++value)
+ {
+ if (*value == NULL)
+ continue;
+
+ CSettingConditionItem *condition = static_cast<CSettingConditionItem*>((*value).get());
+ if (condition == NULL)
+ continue;
+
+ if (condition->Check())
+ ok = true;
+ else if (m_operation == BooleanLogicOperationAnd)
+ return false;
+ }
+
+ return ok;
+}
+
+CSettingCondition::CSettingCondition(CSettingsManager *settingsManager /* = NULL */)
+ : ISettingCondition(settingsManager)
+{
+ m_operation = CBooleanLogicOperationPtr(new CSettingConditionCombination(settingsManager));
+}
+
+bool CSettingCondition::Check() const
+{
+ CSettingConditionCombination *combination = static_cast<CSettingConditionCombination*>(m_operation.get());
+ if (combination == NULL)
+ return false;
+
+ return combination->Check();
+}
+
+void CSettingConditionsManager::AddCondition(const std::string &condition)
+{
+ if (condition.empty())
+ return;
+
+ m_defines.insert(condition);
+}
+
+void CSettingConditionsManager::AddCondition(const std::string &identifier, SettingConditionCheck condition)
+{
+ if (identifier.empty() || condition == NULL)
+ return;
+
+ m_conditions.insert(SettingConditionPair(identifier, condition));
+}
+
+bool CSettingConditionsManager::Check(const std::string &condition, const std::string &value /* = "" */, const std::string &settingId /* = "" */) const
+{
+ if (condition.empty())
+ return false;
+
+ std::string tmpCondition = condition;
+ StringUtils::ToLower(tmpCondition);
+
+ // special handling of "isdefined" conditions
+ if (tmpCondition == "isdefined")
+ {
+ std::string tmpValue = value;
+ StringUtils::ToLower(tmpValue);
+
+ return m_defines.find(tmpValue) != m_defines.end();
+ }
+
+ SettingConditionMap::const_iterator conditionIt = m_conditions.find(tmpCondition);
+ if (conditionIt == m_conditions.end())
+ return false;
+
+ return conditionIt->second(tmpCondition, value, settingId);
+}
+
+CSettingConditionsManager::CSettingConditionsManager()
+{ }
+
+CSettingConditionsManager::~CSettingConditionsManager()
+{
+ m_conditions.clear();
+ m_defines.clear();
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <map>
+#include <set>
+#include <string>
+
+#include "SettingDefinitions.h"
+#include "utils/BooleanLogic.h"
+
+class CSettingsManager;
+
+typedef bool (*SettingConditionCheck)(const std::string &condition, const std::string &value, const std::string &settingId);
+
+class ISettingCondition
+{
+public:
+ ISettingCondition(CSettingsManager *settingsManager)
+ : m_settingsManager(settingsManager)
+ { }
+ virtual ~ISettingCondition() { }
+
+ virtual bool Check() const = 0;
+
+protected:
+ CSettingsManager *m_settingsManager;
+};
+
+class CSettingConditionItem : public CBooleanLogicValue, public ISettingCondition
+{
+public:
+ CSettingConditionItem(CSettingsManager *settingsManager = NULL)
+ : ISettingCondition(settingsManager)
+ { }
+ virtual ~CSettingConditionItem() { }
+
+ virtual bool Deserialize(const TiXmlNode *node);
+ virtual const char* GetTag() const { return SETTING_XML_ELM_CONDITION; }
+ virtual bool Check() const;
+
+protected:
+ std::string m_name;
+ std::string m_setting;
+};
+
+class CSettingConditionCombination : public CBooleanLogicOperation, public ISettingCondition
+{
+public:
+ CSettingConditionCombination(CSettingsManager *settingsManager = NULL)
+ : ISettingCondition(settingsManager)
+ { }
+ virtual ~CSettingConditionCombination() { }
+
+ virtual bool Check() const;
+
+private:
+ virtual CBooleanLogicOperation* newOperation() { return new CSettingConditionCombination(m_settingsManager); }
+ virtual CBooleanLogicValue* newValue() { return new CSettingConditionItem(m_settingsManager); }
+};
+
+class CSettingCondition : public CBooleanLogic, public ISettingCondition
+{
+public:
+ CSettingCondition(CSettingsManager *settingsManager = NULL);
+ virtual ~CSettingCondition() { }
+
+ virtual bool Check() const;
+};
+
+class CSettingConditionsManager
+{
+public:
+ CSettingConditionsManager();
+ virtual ~CSettingConditionsManager();
+
+ void AddCondition(const std::string &condition);
+ void AddCondition(const std::string &identifier, SettingConditionCheck condition);
+
+ bool Check(const std::string &condition, const std::string &value = "", const std::string &settingId = "") const;
+
+private:
+ CSettingConditionsManager(const CSettingConditionsManager&);
+ CSettingConditionsManager const& operator=(CSettingConditionsManager const&);
+
+ typedef std::pair<std::string, SettingConditionCheck> SettingConditionPair;
+ typedef std::map<std::string, SettingConditionCheck> SettingConditionMap;
+
+ SettingConditionMap m_conditions;
+ std::set<std::string> m_defines;
+};
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#define SETTING_XML_ROOT "settings"
+
+#define SETTING_XML_ELM_SECTION "section"
+#define SETTING_XML_ELM_CATEGORY "category"
+#define SETTING_XML_ELM_GROUP "group"
+#define SETTING_XML_ELM_SETTING "setting"
+#define SETTING_XML_ELM_VISIBLE "visible"
+#define SETTING_XML_ELM_REQUIREMENT "requirement"
+#define SETTING_XML_ELM_CONDITION "condition"
+#define SETTING_XML_ELM_LEVEL "level"
+#define SETTING_XML_ELM_DEFAULT "default"
+#define SETTING_XML_ELM_VALUE "value"
+#define SETTING_XML_ELM_CONTROL "control"
+#define SETTING_XML_ELM_CONSTRAINTS "constraints"
+#define SETTING_XML_ELM_OPTIONS "options"
+#define SETTING_XML_ELM_OPTION "option"
+#define SETTING_XML_ELM_MINIMUM "minimum"
+#define SETTING_XML_ELM_STEP "step"
+#define SETTING_XML_ELM_MAXIMUM "maximum"
+#define SETTING_XML_ELM_ALLOWEMPTY "allowempty"
+#define SETTING_XML_ELM_DEPENDENCIES "dependencies"
+#define SETTING_XML_ELM_DEPENDENCY "dependency"
+#define SETTING_XML_ELM_UPDATES "updates"
+#define SETTING_XML_ELM_UPDATE "update"
+#define SETTING_XML_ELM_ACCESS "access"
+#define SETTING_XML_ELM_DELIMITER "delimiter"
+
+#define SETTING_XML_ATTR_ID "id"
+#define SETTING_XML_ATTR_LABEL "label"
+#define SETTING_XML_ATTR_HELP "help"
+#define SETTING_XML_ATTR_TYPE "type"
+#define SETTING_XML_ATTR_PARENT "parent"
+#define SETTING_XML_ATTR_FORMAT "format"
+#define SETTING_XML_ATTR_DELAYED "delayed"
+#define SETTING_XML_ATTR_ON "on"
+#define SETTING_XML_ATTR_OPERATOR "operator"
+#define SETTING_XML_ATTR_NAME "name"
+#define SETTING_XML_ATTR_SETTING "setting"
+#define SETTING_XML_ATTR_BEFORE "before"
+#define SETTING_XML_ATTR_AFTER "after"
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdlib.h>
+
+#include "SettingDependency.h"
+#include "Setting.h"
+#include "SettingDefinitions.h"
+#include "SettingsManager.h"
+#include "utils/log.h"
+#include "utils/StringUtils.h"
+#include "utils/XBMCTinyXML.h"
+
+bool CSettingDependencyCondition::Deserialize(const TiXmlNode *node)
+{
+ if (!CSettingConditionItem::Deserialize(node))
+ return false;
+
+ const TiXmlElement *elem = node->ToElement();
+ if (elem == NULL)
+ return false;
+
+ m_target = SettingDependencyTargetSetting;
+ const char *strTarget = elem->Attribute(SETTING_XML_ATTR_ON);
+ if (strTarget != NULL && !setTarget(strTarget))
+ {
+ CLog::Log(LOGWARNING, "CSettingDependencyCondition: unknown target \"%s\"", strTarget);
+ return false;
+ }
+
+ if (m_target != SettingDependencyTargetSetting && m_name.empty())
+ {
+ CLog::Log(LOGWARNING, "CSettingDependencyCondition: missing name for dependency");
+ return false;
+ }
+
+ if (m_target == SettingDependencyTargetSetting)
+ {
+ if (m_setting.empty())
+ {
+ CLog::Log(LOGWARNING, "CSettingDependencyCondition: missing setting for dependency");
+ return false;
+ }
+
+ m_name = m_setting;
+ }
+
+ m_operator = SettingDependencyOperatorEquals;
+ const char *strOperator = elem->Attribute(SETTING_XML_ATTR_OPERATOR);
+ if (strOperator != NULL && !setOperator(strOperator))
+ {
+ CLog::Log(LOGWARNING, "CSettingDependencyCondition: unknown operator \"%s\"", strOperator);
+ return false;
+ }
+
+ return true;
+}
+
+bool CSettingDependencyCondition::Check() const
+{
+ if (m_name.empty() ||
+ m_target == SettingDependencyTargetNone ||
+ m_operator == SettingDependencyOperatorNone ||
+ m_settingsManager == NULL)
+ return false;
+
+ bool result = false;
+ switch (m_target)
+ {
+ case SettingDependencyTargetSetting:
+ {
+ if (m_setting.empty())
+ return false;
+
+ const CSetting *setting = m_settingsManager->GetSetting(m_setting);
+ if (setting == NULL)
+ {
+ CLog::Log(LOGWARNING, "CSettingDependencyCondition: unable to check condition on unknown setting \"%s\"", m_setting.c_str());
+ return false;
+ }
+
+ if (m_operator == SettingDependencyOperatorEquals)
+ result = setting->Equals(m_value);
+ else if (m_operator == SettingDependencyOperatorContains)
+ result = (setting->ToString().find(m_value) != std::string::npos);
+
+ break;
+ }
+
+ case SettingDependencyTargetProperty:
+ {
+ result = m_settingsManager->GetConditions().Check(m_name, m_value, m_setting);
+ break;
+ }
+
+ default:
+ return false;
+ }
+
+ return result == !m_negated;
+}
+
+bool CSettingDependencyCondition::setTarget(const std::string &target)
+{
+ if (StringUtils::EqualsNoCase(target, "setting"))
+ m_target = SettingDependencyTargetSetting;
+ else if (StringUtils::EqualsNoCase(target, "property"))
+ m_target = SettingDependencyTargetProperty;
+ else
+ return false;
+
+ return true;
+}
+
+bool CSettingDependencyCondition::setOperator(const std::string &op)
+{
+ size_t length = 0;
+ if (StringUtils::EndsWithNoCase(op, "is"))
+ {
+ m_operator = SettingDependencyOperatorEquals;
+ length = 2;
+ }
+ else if (StringUtils::EndsWithNoCase(op, "contains"))
+ {
+ m_operator = SettingDependencyOperatorContains;
+ length = 8;
+ }
+
+ if (op.size() > length + 1)
+ return false;
+ if (op.size() == length + 1)
+ {
+ if (!StringUtils::StartsWith(op, "!"))
+ return false;
+ m_negated = true;
+ }
+
+ return true;
+}
+
+bool CSettingDependencyConditionCombination::Deserialize(const TiXmlNode *node)
+{
+ if (node == NULL)
+ return false;
+
+ size_t numOperations = m_operations.size();
+ size_t numValues = m_values.size();
+
+ if (!CSettingConditionCombination::Deserialize(node))
+ return false;
+
+ if (numOperations < m_operations.size())
+ {
+ for (size_t i = numOperations; i < m_operations.size(); i++)
+ {
+ if (m_operations[i] == NULL)
+ continue;
+
+ CSettingDependencyConditionCombination *combination = static_cast<CSettingDependencyConditionCombination*>(m_operations[i].get());
+ if (combination == NULL)
+ continue;
+
+ const std::set<std::string>& settings = combination->GetSettings();
+ m_settings.insert(settings.begin(), settings.end());
+ }
+ }
+
+ if (numValues < m_values.size())
+ {
+ for (size_t i = numValues; i < m_values.size(); i++)
+ {
+ if (m_values[i] == NULL)
+ continue;
+
+ CSettingDependencyCondition *condition = static_cast<CSettingDependencyCondition*>(m_values[i].get());
+ if (condition == NULL)
+ continue;
+
+ std::string settingId = condition->GetSetting();
+ if (!settingId.empty())
+ m_settings.insert(settingId);
+ }
+ }
+
+ return true;
+}
+
+CSettingDependency::CSettingDependency(CSettingsManager *settingsManager /* = NULL */)
+ : CSettingCondition(settingsManager),
+ m_type(SettingDependencyTypeNone)
+{
+ m_operation = CBooleanLogicOperationPtr(new CSettingDependencyConditionCombination(m_settingsManager));
+}
+
+bool CSettingDependency::Deserialize(const TiXmlNode *node)
+{
+ if (node == NULL)
+ return false;
+
+ const TiXmlElement *elem = node->ToElement();
+ if (elem == NULL)
+ return false;
+
+ const char *strType = elem->Attribute(SETTING_XML_ATTR_TYPE);
+ if (strType == NULL || strlen(strType) <= 0 || !setType(strType))
+ {
+ CLog::Log(LOGWARNING, "CSettingDependency: missing or unknown dependency type definition");
+ return false;
+ }
+
+ return CSettingCondition::Deserialize(node);
+}
+
+std::set<std::string> CSettingDependency::GetSettings() const
+{
+ if (m_operation == NULL)
+ return std::set<std::string>();
+
+ CSettingDependencyConditionCombination *combination = static_cast<CSettingDependencyConditionCombination*>(m_operation.get());
+ if (combination == NULL)
+ return std::set<std::string>();
+
+ return combination->GetSettings();
+}
+
+bool CSettingDependency::setType(const std::string &type)
+{
+ if (StringUtils::EqualsNoCase(type, "enable"))
+ m_type = SettingDependencyTypeEnable;
+ else if (StringUtils::EqualsNoCase(type, "update"))
+ m_type = SettingDependencyTypeUpdate;
+ else if (StringUtils::EqualsNoCase(type, "visible"))
+ m_type = SettingDependencyTypeVisible;
+ else
+ return false;
+
+ return true;
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <list>
+#include <set>
+#include <string>
+
+#include "SettingConditions.h"
+#include "utils/BooleanLogic.h"
+
+typedef enum {
+ SettingDependencyTypeNone = 0,
+ SettingDependencyTypeEnable,
+ SettingDependencyTypeUpdate,
+ SettingDependencyTypeVisible
+} SettingDependencyType;
+
+typedef enum {
+ SettingDependencyOperatorNone = 0,
+ SettingDependencyOperatorEquals,
+ SettingDependencyOperatorContains
+} SettingDependencyOperator;
+
+typedef enum {
+ SettingDependencyTargetNone = 0,
+ SettingDependencyTargetSetting,
+ SettingDependencyTargetProperty
+} SettingDependencyTarget;
+
+class CSettingDependencyCondition : public CSettingConditionItem
+{
+public:
+ CSettingDependencyCondition(CSettingsManager *settingsManager = NULL)
+ : CSettingConditionItem(settingsManager),
+ m_target(SettingDependencyTargetNone),
+ m_operator(SettingDependencyOperatorEquals)
+ { }
+ virtual ~CSettingDependencyCondition() { }
+
+ virtual bool Deserialize(const TiXmlNode *node);
+ virtual bool Check() const;
+
+ const std::string& GetName() const { return m_name; }
+ const std::string& GetSetting() const { return m_setting; }
+ const SettingDependencyTarget GetTarget() const { return m_target; }
+ const SettingDependencyOperator GetOperator() const { return m_operator; }
+
+private:
+ bool setTarget(const std::string &target);
+ bool setOperator(const std::string &op);
+
+ SettingDependencyTarget m_target;
+ SettingDependencyOperator m_operator;
+};
+
+class CSettingDependencyConditionCombination : public CSettingConditionCombination
+{
+public:
+ CSettingDependencyConditionCombination(CSettingsManager *settingsManager = NULL)
+ : CSettingConditionCombination(settingsManager)
+ { }
+ virtual ~CSettingDependencyConditionCombination() { }
+
+ virtual bool Deserialize(const TiXmlNode *node);
+
+ const std::set<std::string>& GetSettings() const { return m_settings; }
+
+private:
+ virtual CBooleanLogicOperation* newOperation() { return new CSettingDependencyConditionCombination(m_settingsManager); }
+ virtual CBooleanLogicValue* newValue() { return new CSettingDependencyCondition(m_settingsManager); }
+
+ std::set<std::string> m_settings;
+};
+
+class CSettingDependency : public CSettingCondition
+{
+public:
+ CSettingDependency(CSettingsManager *settingsManager = NULL);
+ virtual ~CSettingDependency() { }
+
+ virtual bool Deserialize(const TiXmlNode *node);
+
+ SettingDependencyType GetType() const { return m_type; }
+ std::set<std::string> GetSettings() const;
+
+private:
+ bool setType(const std::string &type);
+
+ SettingDependencyType m_type;
+};
+
+typedef std::list<CSettingDependency> SettingDependencies;
+typedef std::map<std::string, SettingDependencies> SettingDependencyMap;
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "SettingRequirement.h"
+#include "SettingsManager.h"
+
+bool CSettingRequirementCondition::Check() const
+{
+ if (m_settingsManager == NULL)
+ return false;
+
+ bool found = m_settingsManager->GetConditions().Check("IsDefined", m_value);
+ if (m_negated)
+ return !found;
+
+ return found;
+}
+
+bool CSettingRequirementConditionCombination::Check() const
+{
+ if (m_operations.empty() && m_values.empty())
+ return true;
+
+ return CSettingConditionCombination::Check();
+}
+
+CSettingRequirement::CSettingRequirement(CSettingsManager *settingsManager /* = NULL */)
+ : CSettingCondition(settingsManager)
+{
+ m_operation = CBooleanLogicOperationPtr(new CSettingRequirementConditionCombination(m_settingsManager));
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <set>
+#include <string>
+
+#include "SettingConditions.h"
+
+class CSettingRequirementCondition : public CSettingConditionItem
+{
+public:
+ CSettingRequirementCondition(CSettingsManager *settingsManager = NULL)
+ : CSettingConditionItem(settingsManager)
+ { }
+ virtual ~CSettingRequirementCondition() { }
+
+ virtual bool Check() const;
+};
+
+class CSettingRequirementConditionCombination : public CSettingConditionCombination
+{
+public:
+ CSettingRequirementConditionCombination(CSettingsManager *settingsManager = NULL)
+ : CSettingConditionCombination(settingsManager)
+ { }
+ virtual ~CSettingRequirementConditionCombination() { }
+
+ virtual bool Check() const;
+
+private:
+ virtual CBooleanLogicOperation* newOperation() { return new CSettingRequirementConditionCombination(m_settingsManager); }
+ virtual CBooleanLogicValue* newValue() { return new CSettingRequirementCondition(m_settingsManager); }
+};
+
+class CSettingRequirement : public CSettingCondition
+{
+public:
+ CSettingRequirement(CSettingsManager *settingsManager = NULL);
+ virtual ~CSettingRequirement() { }
+};
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "SettingSection.h"
+#include "SettingDefinitions.h"
+#include "SettingsManager.h"
+#include "utils/log.h"
+#include "utils/StringUtils.h"
+#include "utils/XBMCTinyXML.h"
+
+template<class T> void addISetting(const TiXmlNode *node, const T &item, std::vector<T> &items)
+{
+ if (node == NULL)
+ return;
+
+ const TiXmlElement *element = node->ToElement();
+ if (element == NULL)
+ return;
+
+ // check if there is a "before" or "after" attribute to place the setting at a specific position
+ int position = -1; // -1 => end, 0 => before, 1 => after
+ const char *positionId = element->Attribute(SETTING_XML_ATTR_BEFORE);
+ if (positionId != NULL && strlen(positionId) > 0)
+ position = 0;
+ else if ((positionId = element->Attribute(SETTING_XML_ATTR_AFTER)) != NULL && strlen(positionId) > 0)
+ position = 1;
+
+ if (positionId != NULL && strlen(positionId) > 0 && position >= 0)
+ {
+ for (typename std::vector<T>::iterator it = items.begin(); it != items.end(); ++it)
+ {
+ if (!StringUtils::EqualsNoCase((*it)->GetId(), positionId))
+ continue;
+
+ typename std::vector<T>::iterator positionIt = it;
+ if (position == 1)
+ ++positionIt;
+
+ items.insert(positionIt, item);
+ return;
+ }
+ }
+
+ items.push_back(item);
+}
+
+CSettingGroup::CSettingGroup(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : ISetting(id, settingsManager)
+{ }
+
+CSettingGroup::~CSettingGroup()
+{
+ for (SettingList::const_iterator setting = m_settings.begin(); setting != m_settings.end(); ++setting)
+ delete *setting;
+ m_settings.clear();
+}
+
+bool CSettingGroup::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ // handle <visible> conditions
+ if (!ISetting::Deserialize(node, update))
+ return false;
+
+ const TiXmlElement *settingElement = node->FirstChildElement(SETTING_XML_ELM_SETTING);
+ while (settingElement != NULL)
+ {
+ std::string settingId;
+ if (CSettingCategory::DeserializeIdentification(settingElement, settingId))
+ {
+ CSetting *setting = NULL;
+ for (SettingList::iterator itSetting = m_settings.begin(); itSetting != m_settings.end(); ++itSetting)
+ {
+ if ((*itSetting)->GetId() == settingId)
+ {
+ setting = *itSetting;
+ break;
+ }
+ }
+
+ update = (setting != NULL);
+ if (!update)
+ {
+ const char* settingType = settingElement->Attribute(SETTING_XML_ATTR_TYPE);
+ if (settingType == NULL || strlen(settingType) <= 0)
+ {
+ CLog::Log(LOGERROR, "CSettingGroup: unable to read setting type of \"%s\"", settingId.c_str());
+ return false;
+ }
+
+ setting = m_settingsManager->CreateSetting(settingType, settingId, m_settingsManager);
+ if (setting == NULL)
+ CLog::Log(LOGERROR, "CSettingGroup: unknown setting type \"%s\" of \"%s\"", settingType, settingId.c_str());
+ }
+
+ if (setting == NULL)
+ CLog::Log(LOGERROR, "CSettingGroup: unable to create new setting \"%s\"", settingId.c_str());
+ else if (!setting->Deserialize(settingElement, update))
+ {
+ CLog::Log(LOGWARNING, "CSettingGroup: unable to read setting \"%s\"", settingId.c_str());
+ if (!update)
+ delete setting;
+ }
+ else if (!update)
+ addISetting(settingElement, setting, m_settings);
+ }
+
+ settingElement = settingElement->NextSiblingElement(SETTING_XML_ELM_SETTING);
+ }
+
+ return true;
+}
+
+SettingList CSettingGroup::GetSettings(SettingLevel level) const
+{
+ SettingList settings;
+
+ for (SettingList::const_iterator it = m_settings.begin(); it != m_settings.end(); ++it)
+ {
+ if ((*it)->GetLevel() <= level && (*it)->MeetsRequirements())
+ settings.push_back(*it);
+ }
+
+ return settings;
+}
+
+CSettingCategory::CSettingCategory(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : ISetting(id, settingsManager),
+ m_label(-1), m_help(-1),
+ m_accessCondition(settingsManager)
+{ }
+
+CSettingCategory::~CSettingCategory()
+{
+ for (SettingGroupList::const_iterator it = m_groups.begin(); it != m_groups.end(); ++it)
+ delete *it;
+
+ m_groups.clear();
+}
+
+bool CSettingCategory::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ // handle <visible> conditions
+ if (!ISetting::Deserialize(node, update))
+ return false;
+
+ const TiXmlElement *element = node->ToElement();
+ if (element == NULL)
+ return false;
+
+ int tmp = -1;
+ if (element->QueryIntAttribute(SETTING_XML_ATTR_LABEL, &tmp) == TIXML_SUCCESS && tmp > 0)
+ m_label = tmp;
+ if (element->QueryIntAttribute(SETTING_XML_ATTR_HELP, &tmp) == TIXML_SUCCESS && tmp > 0)
+ m_help = tmp;
+
+ const TiXmlNode *accessNode = node->FirstChild(SETTING_XML_ELM_ACCESS);
+ if (accessNode != NULL && !m_accessCondition.Deserialize(accessNode))
+ return false;
+
+ const TiXmlNode *groupNode = node->FirstChildElement(SETTING_XML_ELM_GROUP);
+ while (groupNode != NULL)
+ {
+ std::string groupId;
+ if (CSettingGroup::DeserializeIdentification(groupNode, groupId))
+ {
+ CSettingGroup *group = NULL;
+ for (SettingGroupList::iterator itGroup = m_groups.begin(); itGroup != m_groups.end(); ++itGroup)
+ {
+ if ((*itGroup)->GetId() == groupId)
+ {
+ group = *itGroup;
+ break;
+ }
+ }
+
+ update = (group != NULL);
+ if (!update)
+ group = new CSettingGroup(groupId, m_settingsManager);
+
+ if (group->Deserialize(groupNode, update))
+ {
+ if (!update)
+ addISetting(groupNode, group, m_groups);
+ }
+ else
+ {
+ CLog::Log(LOGWARNING, "CSettingCategory: unable to read group \"%s\"", groupId.c_str());
+ if (!update)
+ delete group;
+ }
+ }
+
+ groupNode = groupNode->NextSibling(SETTING_XML_ELM_GROUP);
+ }
+
+ return true;
+}
+
+SettingGroupList CSettingCategory::GetGroups(SettingLevel level) const
+{
+ SettingGroupList groups;
+
+ for (SettingGroupList::const_iterator it = m_groups.begin(); it != m_groups.end(); ++it)
+ {
+ if ((*it)->MeetsRequirements() && (*it)->IsVisible() && (*it)->GetSettings(level).size() > 0)
+ groups.push_back(*it);
+ }
+
+ return groups;
+}
+
+bool CSettingCategory::CanAccess() const
+{
+ return m_accessCondition.Check();
+}
+
+CSettingSection::CSettingSection(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
+ : ISetting(id, settingsManager),
+ m_label(-1), m_help(-1)
+{ }
+
+CSettingSection::~CSettingSection()
+{
+ for (SettingCategoryList::const_iterator it = m_categories.begin(); it != m_categories.end(); ++it)
+ delete *it;
+
+ m_categories.clear();
+}
+
+bool CSettingSection::Deserialize(const TiXmlNode *node, bool update /* = false */)
+{
+ // handle <visible> conditions
+ if (!ISetting::Deserialize(node, update))
+ return false;
+
+ const TiXmlElement *element = node->ToElement();
+ if (element == NULL)
+ return false;
+
+ int tmp = -1;
+ if (element->QueryIntAttribute(SETTING_XML_ATTR_LABEL, &tmp) == TIXML_SUCCESS && tmp > 0)
+ m_label = tmp;
+ if (element->QueryIntAttribute(SETTING_XML_ATTR_HELP, &tmp) == TIXML_SUCCESS && tmp > 0)
+ m_help = tmp;
+
+ const TiXmlNode *categoryNode = node->FirstChild(SETTING_XML_ELM_CATEGORY);
+ while (categoryNode != NULL)
+ {
+ std::string categoryId;
+ if (CSettingCategory::DeserializeIdentification(categoryNode, categoryId))
+ {
+ CSettingCategory *category = NULL;
+ for (SettingCategoryList::iterator itCategory = m_categories.begin(); itCategory != m_categories.end(); ++itCategory)
+ {
+ if ((*itCategory)->GetId() == categoryId)
+ {
+ category = *itCategory;
+ break;
+ }
+ }
+
+ update = (category != NULL);
+ if (!update)
+ category = new CSettingCategory(categoryId, m_settingsManager);
+
+ if (category->Deserialize(categoryNode, update))
+ {
+ if (!update)
+ addISetting(categoryNode, category, m_categories);
+ }
+ else
+ {
+ CLog::Log(LOGWARNING, "CSettingSection: unable to read category \"%s\"", categoryId.c_str());
+ if (!update)
+ delete category;
+ }
+ }
+
+ categoryNode = categoryNode->NextSibling(SETTING_XML_ELM_CATEGORY);
+ }
+
+ return true;
+}
+
+SettingCategoryList CSettingSection::GetCategories(SettingLevel level) const
+{
+ SettingCategoryList categories;
+
+ for (SettingCategoryList::const_iterator it = m_categories.begin(); it != m_categories.end(); ++it)
+ {
+ if ((*it)->MeetsRequirements() && (*it)->IsVisible() && (*it)->GetGroups(level).size() > 0)
+ categories.push_back(*it);
+ }
+
+ return categories;
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+#include <vector>
+
+#include "ISetting.h"
+#include "Setting.h"
+#include "SettingCategoryAccess.h"
+
+class CSettingsManager;
+
+/*!
+ \ingroup settings
+ \brief Group of settings being part of a category
+ \sa CSettingCategory
+ \sa CSetting
+ */
+class CSettingGroup : public ISetting
+{
+public:
+ /*!
+ \brief Creates a new setting group with the given identifier.
+
+ \param id Identifier of the setting group
+ \param settingsManager Reference to the settings manager
+ */
+ CSettingGroup(const std::string &id, CSettingsManager *settingsManager = NULL);
+ ~CSettingGroup();
+
+ // implementation of ISetting
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ /*!
+ \brief Gets the full list of settings belonging to the setting group.
+
+ \return Full list of settings belonging to the setting group
+ */
+ const SettingList& GetSettings() const { return m_settings; }
+ /*!
+ \brief Gets the list of settings assigned to the given setting level (or
+ below) and that meet the requirements conditions belonging to the setting
+ group.
+
+ \param level Level the settings should be assigned to
+ \return List of settings belonging to the setting group
+ */
+ SettingList GetSettings(SettingLevel level) const;
+
+private:
+ SettingList m_settings;
+};
+
+typedef std::vector<CSettingGroup *> SettingGroupList;
+
+/*!
+ \ingroup settings
+ \brief Category of groups of settings being part of a section
+ \sa CSettingSection
+ \sa CSettingGroup
+ */
+class CSettingCategory : public ISetting
+{
+public:
+ /*!
+ \brief Creates a new setting category with the given identifier.
+
+ \param id Identifier of the setting category
+ \param settingsManager Reference to the settings manager
+ */
+ CSettingCategory(const std::string &id, CSettingsManager *settingsManager = NULL);
+ ~CSettingCategory();
+
+ // implementation of ISetting
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ /*!
+ \brief Gets the localizeable label ID of the setting category.
+
+ \return Localizeable label ID of the setting category
+ */
+ const int GetLabel() const { return m_label; }
+ /*!
+ \brief Sets the localizeable label ID of the setting category.
+
+ \param label Localizeable label ID of the setting category
+ */
+ void SetLabel(int label) { m_label = label; }
+ /*!
+ \brief Gets the localizeable help ID of the setting category.
+
+ \return Localizeable help ID of the setting category
+ */
+ const int GetHelp() const { return m_help; }
+ /*!
+ \brief Sets the localizeable help ID of the setting category.
+
+ \param label Localizeable help ID of the setting category
+ */
+ void SetHelp(int help) { m_help = help; }
+ /*!
+ \brief Gets the full list of setting groups belonging to the setting
+ category.
+
+ \return Full list of setting groups belonging to the setting category
+ */
+ const SettingGroupList& GetGroups() const { return m_groups; }
+ /*!
+ \brief Gets the list of setting groups belonging to the setting category
+ that contain settings assigned to the given setting level (or below) and
+ that meet the requirements and visibility conditions.
+
+ \param level Level the settings should be assigned to
+ \return List of setting groups belonging to the setting category
+ */
+ SettingGroupList GetGroups(SettingLevel level) const;
+
+ /*!
+ \brief Whether the setting category can be accessed or not.
+
+ \return True if the setting category can be accessed, false otherwise
+ */
+ bool CanAccess() const;
+
+private:
+ int m_label;
+ int m_help;
+ SettingGroupList m_groups;
+ CSettingCategoryAccess m_accessCondition;
+};
+
+typedef std::vector<CSettingCategory *> SettingCategoryList;
+
+/*!
+ \ingroup settings
+ \brief Section of setting categories
+ \sa CSettings
+ \sa CSettingCategory
+ */
+class CSettingSection : public ISetting
+{
+public:
+ /*!
+ \brief Creates a new setting section with the given identifier.
+
+ \param id Identifier of the setting section
+ \param settingsManager Reference to the settings manager
+ */
+ CSettingSection(const std::string &id, CSettingsManager *settingsManager = NULL);
+ ~CSettingSection();
+
+ // implementation of ISetting
+ virtual bool Deserialize(const TiXmlNode *node, bool update = false);
+
+ /*!
+ \brief Gets the localizeable label ID of the setting section.
+
+ \return Localizeable label ID of the setting section
+ */
+ const int GetLabel() const { return m_label; }
+ /*!
+ \brief Sets the localizeable label ID of the setting section.
+
+ \param label Localizeable label ID of the setting section
+ */
+ void SetLabel(int label) { m_label = label; }
+ /*!
+ \brief Gets the localizeable help ID of the setting section.
+
+ \return Localizeable help ID of the setting section
+ */
+ const int GetHelp() const { return m_help; }
+ /*!
+ \brief Sets the localizeable help ID of the setting section.
+
+ \param label Localizeable help ID of the setting section
+ */
+ void SetHelp(int help) { m_help = help; }
+ /*!
+ \brief Gets the full list of setting categories belonging to the setting
+ section.
+
+ \return Full list of setting categories belonging to the setting section
+ */
+ const SettingCategoryList& GetCategories() const { return m_categories; }
+ /*!
+ \brief Gets the list of setting categories belonging to the setting section
+ that contain settings assigned to the given setting level (or below) and
+ that meet the requirements and visibility conditions.
+
+ \param level Level the settings should be assigned to
+ \return List of setting categories belonging to the setting section
+ */
+ SettingCategoryList GetCategories(SettingLevel level) const;
+
+private:
+ int m_label;
+ int m_help;
+ SettingCategoryList m_categories;
+};
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "SettingUpdate.h"
+#include "SettingDefinitions.h"
+#include "utils/log.h"
+#include "utils/StringUtils.h"
+#include "utils/XBMCTinyXML.h"
+
+CSettingUpdate::CSettingUpdate()
+ : m_type(SettingUpdateTypeNone)
+{ }
+
+bool CSettingUpdate::operator<(const CSettingUpdate& rhs) const
+{
+ return m_type < rhs.m_type && m_value < rhs.m_value;
+}
+
+bool CSettingUpdate::Deserialize(const TiXmlNode *node)
+{
+ if (node == NULL)
+ return false;
+
+ const TiXmlElement *elem = node->ToElement();
+ if (elem == NULL)
+ return false;
+
+ const char *strType = elem->Attribute(SETTING_XML_ATTR_TYPE);
+ if (strType == NULL || strlen(strType) <= 0 || !setType(strType))
+ {
+ CLog::Log(LOGWARNING, "CSettingUpdate: missing or unknown update type definition");
+ return false;
+ }
+
+ if (m_type == SettingUpdateTypeRename)
+ {
+ if (node->FirstChild() == NULL || node->FirstChild()->Type() != TiXmlNode::TINYXML_TEXT)
+ {
+ CLog::Log(LOGWARNING, "CSettingUpdate: missing or invalid setting id for rename update definition");
+ return false;
+ }
+
+ m_value = node->FirstChild()->ValueStr();
+ }
+
+ return true;
+}
+
+bool CSettingUpdate::setType(const std::string &type)
+{
+ if (StringUtils::EqualsNoCase(type, "change"))
+ m_type = SettingUpdateTypeChange;
+ else if (StringUtils::EqualsNoCase(type, "rename"))
+ m_type = SettingUpdateTypeRename;
+ else
+ return false;
+
+ return true;
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+
+class TiXmlNode;
+
+typedef enum {
+ SettingUpdateTypeNone = 0,
+ SettingUpdateTypeRename,
+ SettingUpdateTypeChange
+} SettingUpdateType;
+
+class CSettingUpdate
+{
+public:
+ CSettingUpdate();
+ virtual ~CSettingUpdate() { }
+
+ bool operator<(const CSettingUpdate& rhs) const;
+
+ virtual bool Deserialize(const TiXmlNode *node);
+
+ SettingUpdateType GetType() const { return m_type; }
+ const std::string& GetValue() const { return m_value; }
+
+private:
+ bool setType(const std::string &type);
+
+ SettingUpdateType m_type;
+ std::string m_value;
+};
--- /dev/null
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "SettingsManager.h"
+#include "SettingDefinitions.h"
+#include "SettingSection.h"
+#include "Setting.h"
+#include "utils/log.h"
+#include "utils/StringUtils.h"
+#include "utils/XBMCTinyXML.h"
+
+
+CSettingsManager::CSettingsManager()
+ : m_initialized(false), m_loaded(false)
+{ }
+
+CSettingsManager::~CSettingsManager()
+{
+ // first clear all registered settings handler and subsettings
+ // implementations because we can't be sure that they are still valid
+ m_settingsHandlers.clear();
+ m_subSettings.clear();
+ m_settingCreators.clear();
+ m_settingControlCreators.clear();
+
+ Clear();
+}
+
+bool CSettingsManager::Initialize(const TiXmlElement *root)
+{
+ CExclusiveLock lock(m_critical);
+ CExclusiveLock settingsLock(m_settingsCritical);
+ if (m_initialized || root == NULL)
+ return false;
+
+ if (!StringUtils::EqualsNoCase(root->ValueStr(), SETTING_XML_ROOT))
+ {
+ CLog::Log(LOGERROR, "CSettingsManager: error reading settings definition: doesn't contain <settings> tag");
+ return false;
+ }
+
+ const TiXmlNode *sectionNode = root->FirstChild(SETTING_XML_ELM_SECTION);
+ while (sectionNode != NULL)
+ {
+ std::string sectionId;
+ if (CSettingSection::DeserializeIdentification(sectionNode, sectionId))
+ {
+ CSettingSection *section = NULL;
+ SettingSectionMap::iterator itSection = m_sections.find(sectionId);
+ bool update = (itSection != m_sections.end());
+ if (!update)
+ section = new CSettingSection(sectionId, this);
+ else
+ section = itSection->second;
+
+ if (section->Deserialize(sectionNode, update))
+ {
+ section->CheckRequirements();
+ if (!update)
+ m_sections[section->GetId()] = section;
+
+ // get all settings and add them to the settings map
+ for (SettingCategoryList::const_iterator categoryIt = section->GetCategories().begin(); categoryIt != section->GetCategories().end(); ++categoryIt)
+ {
+ (*categoryIt)->CheckRequirements();
+ for (SettingGroupList::const_iterator groupIt = (*categoryIt)->GetGroups().begin(); groupIt != (*categoryIt)->GetGroups().end(); ++groupIt)
+ {
+ (*groupIt)->CheckRequirements();
+ for (SettingList::const_iterator settingIt = (*groupIt)->GetSettings().begin(); settingIt != (*groupIt)->GetSettings().end(); ++settingIt)
+ {
+ (*settingIt)->CheckRequirements();
+
+ const std::string &settingId = (*settingIt)->GetId();
+ SettingMap::iterator setting = m_settings.find(settingId);
+ if (setting == m_settings.end())
+ {
+ Setting tmpSetting = { NULL };
+ std::pair<SettingMap::iterator, bool> tmpIt = m_settings.insert(make_pair(settingId, tmpSetting));
+ setting = tmpIt.first;
+ }
+
+ if (setting->second.setting == NULL)
+ {
+ setting->second.setting = *settingIt;
+ (*settingIt)->m_callback = this;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ CLog::Log(LOGWARNING, "CSettingsManager: unable to read section \"%s\"", sectionId.c_str());
+ if (!update)
+ delete section;
+ }
+ }
+
+ sectionNode = sectionNode->NextSibling(SETTING_XML_ELM_SECTION);
+ }
+
+ for (SettingMap::iterator itSettingDep = m_settings.begin(); itSettingDep != m_settings.end(); ++itSettingDep)
+ {
+ if (itSettingDep->second.setting == NULL)
+ continue;
+
+ const SettingDependencies& deps = itSettingDep->second.setting->GetDependencies();
+ for (SettingDependencies::const_iterator depIt = deps.begin(); depIt != deps.end(); ++depIt)
+ {
+ std::set<std::string> settingIds = depIt->GetSettings();
+ for (std::set<std::string>::const_iterator itSettingId = settingIds.begin(); itSettingId != settingIds.end(); ++itSettingId)
+ {
+ SettingMap::iterator setting = m_settings.find(*itSettingId);
+ if (setting == m_settings.end())
+ continue;
+
+ bool newDep = true;
+ SettingDependencies &settingDeps = setting->second.dependencies[itSettingDep->first];
+ for (SettingDependencies::const_iterator itDeps = settingDeps.begin(); itDeps != settingDeps.end(); ++itDeps)
+ {
+ if (itDeps->GetType() == depIt->GetType())
+ {
+ newDep = false;
+ break;
+ }
+ }
+
+ if (newDep)
+ settingDeps.push_back(*depIt);
+ }
+ }
+ }
+
+ return true;
+}
+
+bool CSettingsManager::Load(const TiXmlElement *root, bool &updated, bool triggerEvents /* = true */, std::map<std::string, CSetting*> *loadedSettings /* = NULL */)
+{
+ CSharedLock lock(m_critical);
+ CExclusiveLock settingsLock(m_settingsCritical);
+ if (m_loaded || root == NULL)
+ return false;
+
+ if (triggerEvents && !OnSettingsLoading())
+ return false;
+
+ if (!Deserialize(root, loadedSettings))
+ return false;
+
+ bool ret = true;
+ // load any ISubSettings implementations
+ if (triggerEvents)
+ ret = Load(root);
+
+ updated = UpdateSettings(root);
+
+ if (triggerEvents)
+ OnSettingsLoaded();
+
+ return ret;
+}
+
+bool CSettingsManager::Save(TiXmlNode *root) const
+{
+ CSharedLock lock(m_critical);
+ CSharedLock settingsLock(m_settingsCritical);
+ if (!m_initialized || root == NULL)
+ return false;
+
+ if (!OnSettingsSaving())
+ return false;
+
+ if (!Serialize(root))
+ {
+ CLog::Log(LOGERROR, "CSettingsManager: failed to save settings");
+ return false;
+ }
+
+ // save any ISubSettings implementations
+ for (std::set<ISubSettings*>::const_iterator it = m_subSettings.begin(); it != m_subSettings.end(); ++it)
+ {
+ if (!(*it)->Save(root))
+ return false;
+ }
+
+ OnSettingsSaved();
+
+ return true;
+}
+
+void CSettingsManager::Unload()
+{
+ CExclusiveLock lock(m_settingsCritical);
+ if (!m_loaded)
+ return;
+
+ // needs to be set before calling CSetting::Reset() to avoid calls to
+ // OnSettingChanging() and OnSettingChanged()
+ m_loaded = false;
+
+ for (SettingMap::iterator setting = m_settings.begin(); setting != m_settings.end(); ++setting)
+ setting->second.setting->Reset();
+
+ OnSettingsUnloaded();
+}
+
+void CSettingsManager::Clear()
+{
+ CExclusiveLock lock(m_critical);
+ Unload();
+
+ m_settings.clear();
+ for (SettingSectionMap::iterator section = m_sections.begin(); section != m_sections.end(); ++section)
+ delete section->second;
+ m_sections.clear();
+
+ OnSettingsCleared();
+
+ for (std::set<ISubSettings*>::const_iterator it = m_subSettings.begin(); it != m_subSettings.end(); ++it)
+ (*it)->Clear();
+
+ m_initialized = false;
+}
+
+bool CSettingsManager::LoadSetting(const TiXmlNode *node, const std::string &settingId)
+{
+ if (node == NULL)
+ return false;
+
+ CSetting *setting = GetSetting(settingId);
+ if (setting == NULL)
+ return false;
+
+ return LoadSetting(node, setting);
+}
+
+void CSettingsManager::SetInitialized()
+{
+ CExclusiveLock lock(m_settingsCritical);
+ if (m_initialized)
+ return;
+
+ m_initialized = true;
+
+ for (SettingMap::iterator setting = m_settings.begin(); setting != m_settings.end(); )
+ {
+ SettingMap::iterator tmpIterator = setting++;
+ if (tmpIterator->second.setting == NULL)
+ m_settings.erase(tmpIterator);
+ }
+}
+
+void CSettingsManager::RegisterCallback(ISettingCallback *callback, const std::set<std::string> &settingList)
+{
+ CExclusiveLock lock(m_settingsCritical);
+ if (callback == NULL)
+ return;
+
+ for (std::set<std::string>::const_iterator settingIt = settingList.begin(); settingIt != settingList.end(); ++settingIt)
+ {
+ std::string id = *settingIt;
+ StringUtils::ToLower(id);
+
+ SettingMap::iterator setting = m_settings.find(id);
+ if (setting == m_settings.end())
+ {
+ if (m_initialized)
+ continue;
+
+ Setting tmpSetting = { NULL };
+ std::pair<SettingMap::iterator, bool> tmpIt = m_settings.insert(make_pair(id, tmpSetting));
+ setting = tmpIt.first;
+ }
+
+ setting->second.callbacks.insert(callback);
+ }
+}
+
+void CSettingsManager::UnregisterCallback(ISettingCallback *callback)
+{
+ CExclusiveLock lock(m_settingsCritical);
+ for (SettingMap::iterator settingIt = m_settings.begin(); settingIt != m_settings.end(); ++settingIt)
+ settingIt->second.callbacks.erase(callback);
+}
+
+void CSettingsManager::RegisterSettingType(const std::string &settingType, ISettingCreator *settingCreator)
+{
+ CExclusiveLock lock(m_critical);
+ if (settingType.empty() || settingCreator == NULL)
+ return;
+
+ SettingCreatorMap::const_iterator creatorIt = m_settingCreators.find(settingType);
+ if (creatorIt == m_settingCreators.end())
+ m_settingCreators.insert(make_pair(settingType, settingCreator));
+}
+
+void CSettingsManager::RegisterSettingControl(const std::string &controlType, ISettingControlCreator *settingControlCreator)
+{
+ if (controlType.empty() || settingControlCreator == NULL)
+ return;
+
+ CExclusiveLock lock(m_critical);
+ SettingControlCreatorMap::const_iterator creatorIt = m_settingControlCreators.find(controlType);
+ if (creatorIt == m_settingControlCreators.end())
+ m_settingControlCreators.insert(make_pair(controlType, settingControlCreator));
+}
+
+void CSettingsManager::RegisterSettingsHandler(ISettingsHandler *settingsHandler)
+{
+ if (settingsHandler == NULL)
+ return;
+
+ CExclusiveLock lock(m_critical);
+ if (find(m_settingsHandlers.begin(), m_settingsHandlers.end(), settingsHandler) == m_settingsHandlers.end())
+ m_settingsHandlers.push_back(settingsHandler);
+}
+
+void CSettingsManager::UnregisterSettingsHandler(ISettingsHandler *settingsHandler)
+{
+ if (settingsHandler == NULL)
+ return;
+
+ CExclusiveLock lock(m_critical);
+ SettingsHandlers::iterator it = find(m_settingsHandlers.begin(), m_settingsHandlers.end(), settingsHandler);
+ if (it != m_settingsHandlers.end())
+ m_settingsHandlers.erase(it);
+}
+
+void CSettingsManager::RegisterSubSettings(ISubSettings *subSettings)
+{
+ CExclusiveLock lock(m_critical);
+ if (subSettings == NULL)
+ return;
+
+ m_subSettings.insert(subSettings);
+}
+
+void CSettingsManager::UnregisterSubSettings(ISubSettings *subSettings)
+{
+ CExclusiveLock lock(m_critical);
+ if (subSettings == NULL)
+ return;
+
+ m_subSettings.erase(subSettings);
+}
+
+void CSettingsManager::RegisterSettingOptionsFiller(const std::string &identifier, IntegerSettingOptionsFiller optionsFiller)
+{
+ if (identifier.empty() || optionsFiller == NULL)
+ return;
+
+ RegisterSettingOptionsFiller(identifier, (void*)optionsFiller, SettingOptionsFillerTypeInteger);
+}
+
+void CSettingsManager::RegisterSettingOptionsFiller(const std::string &identifier, StringSettingOptionsFiller optionsFiller)
+{
+ if (identifier.empty() || optionsFiller == NULL)
+ return;
+
+ RegisterSettingOptionsFiller(identifier, (void*)optionsFiller, SettingOptionsFillerTypeString);
+}
+
+void CSettingsManager::UnregisterSettingOptionsFiller(const std::string &identifier)
+{
+ CExclusiveLock lock(m_critical);
+ m_optionsFillers.erase(identifier);
+}
+
+void* CSettingsManager::GetSettingOptionsFiller(const CSetting *setting)
+{
+ CSharedLock lock(m_critical);
+ if (setting == NULL)
+ return NULL;
+
+ // get the option filler's identifier
+ std::string filler;
+ if (setting->GetType() == SettingTypeInteger)
+ filler = ((const CSettingInt*)setting)->GetOptionsFiller();
+ else if (setting->GetType() == SettingTypeString)
+ filler = ((const CSettingString*)setting)->GetOptionsFiller();
+
+ if (filler.empty())
+ return NULL;
+
+ // check if such an option filler is known
+ SettingOptionsFillerMap::const_iterator fillerIt = m_optionsFillers.find(filler);
+ if (fillerIt == m_optionsFillers.end())
+ return NULL;
+
+ if (fillerIt->second.filler == NULL)
+ return NULL;
+
+ // make sure the option filler's type matches the setting's type
+ switch (fillerIt->second.type)
+ {
+ case SettingOptionsFillerTypeInteger:
+ {
+ if (setting->GetType() != SettingTypeInteger)
+ return NULL;
+
+ break;
+ }
+
+ case SettingOptionsFillerTypeString:
+ {
+ if (setting->GetType() != SettingTypeString)
+ return NULL;
+
+ break;
+ }
+
+ default:
+ return NULL;
+ }
+
+ return fillerIt->second.filler;
+}
+
+CSetting* CSettingsManager::GetSetting(const std::string &id) const
+{
+ CSharedLock lock(m_settingsCritical);
+ if (id.empty())
+ return NULL;
+
+ std::string settingId = id;
+ StringUtils::ToLower(settingId);
+
+ SettingMap::const_iterator setting = m_settings.find(settingId);
+ if (setting != m_settings.end())
+ return setting->second.setting;
+
+ CLog::Log(LOGDEBUG, "CSettingsManager: requested setting (%s) was not found.", id.c_str());
+ return NULL;
+}
+
+std::vector<CSettingSection*> CSettingsManager::GetSections() const
+{
+ CSharedLock lock(m_critical);
+ std::vector<CSettingSection*> sections;
+ for (SettingSectionMap::const_iterator sectionIt = m_sections.begin(); sectionIt != m_sections.end(); ++sectionIt)
+ sections.push_back(sectionIt->second);
+
+ return sections;
+}
+
+CSettingSection* CSettingsManager::GetSection(const std::string §ion) const
+{
+ CSharedLock lock(m_critical);
+ if (section.empty())
+ return NULL;
+
+ std::string sectionId = section;
+ StringUtils::ToLower(sectionId);
+
+ SettingSectionMap::const_iterator sectionIt = m_sections.find(sectionId);
+ if (sectionIt != m_sections.end())
+ return sectionIt->second;
+
+ CLog::Log(LOGDEBUG, "CSettingsManager: requested setting section (%s) was not found.", section.c_str());
+ return NULL;
+}
+
+SettingDependencyMap CSettingsManager::GetDependencies(const std::string &id) const
+{
+ CSharedLock lock(m_settingsCritical);
+ SettingMap::const_iterator setting = m_settings.find(id);
+ if (setting == m_settings.end())
+ return SettingDependencyMap();
+
+ return setting->second.dependencies;
+}
+
+SettingDependencyMap CSettingsManager::GetDependencies(const CSetting *setting) const
+{
+ if (setting == NULL)
+ return SettingDependencyMap();
+
+ return GetDependencies(setting->GetId());
+}
+
+bool CSettingsManager::GetBool(const std::string &id) const
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeBool)
+ return false;
+
+ return ((CSettingBool*)setting)->GetValue();
+}
+
+bool CSettingsManager::SetBool(const std::string &id, bool value)
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeBool)
+ return false;
+
+ return ((CSettingBool*)setting)->SetValue(value);
+}
+
+bool CSettingsManager::ToggleBool(const std::string &id)
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeBool)
+ return false;
+
+ return SetBool(id, !((CSettingBool*)setting)->GetValue());
+}
+
+int CSettingsManager::GetInt(const std::string &id) const
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeInteger)
+ return 0;
+
+ return ((CSettingInt*)setting)->GetValue();
+}
+
+bool CSettingsManager::SetInt(const std::string &id, int value)
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeInteger)
+ return false;
+
+ return ((CSettingInt*)setting)->SetValue(value);
+}
+
+double CSettingsManager::GetNumber(const std::string &id) const
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeNumber)
+ return 0.0;
+
+ return ((CSettingNumber*)setting)->GetValue();
+}
+
+bool CSettingsManager::SetNumber(const std::string &id, double value)
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeNumber)
+ return false;
+
+ return ((CSettingNumber*)setting)->SetValue(value);
+}
+
+std::string CSettingsManager::GetString(const std::string &id) const
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeString)
+ return "";
+
+ return ((CSettingString*)setting)->GetValue();
+}
+
+bool CSettingsManager::SetString(const std::string &id, const std::string &value)
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeString)
+ return false;
+
+ return ((CSettingString*)setting)->SetValue(value);
+}
+
+std::vector< boost::shared_ptr<CSetting> > CSettingsManager::GetList(const std::string &id) const
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeList)
+ return std::vector< boost::shared_ptr<CSetting> >();
+
+ return ((CSettingList*)setting)->GetValue();
+}
+
+bool CSettingsManager::SetList(const std::string &id, const std::vector< boost::shared_ptr<CSetting> > &value)
+{
+ CSharedLock lock(m_settingsCritical);
+ CSetting *setting = GetSetting(id);
+ if (setting == NULL || setting->GetType() != SettingTypeList)
+ return false;
+
+ return ((CSettingList*)setting)->SetValue(value);
+}
+
+void CSettingsManager::AddCondition(const std::string &condition)
+{
+ CExclusiveLock lock(m_critical);
+ if (condition.empty())
+ return;
+
+ m_conditions.AddCondition(condition);
+}
+
+void CSettingsManager::AddCondition(const std::string &identifier, SettingConditionCheck condition)
+{
+ CExclusiveLock lock(m_critical);
+ if (identifier.empty() || condition == NULL)
+ return;
+
+ m_conditions.AddCondition(identifier, condition);
+}
+
+bool CSettingsManager::Serialize(TiXmlNode *parent) const
+{
+ if (parent == NULL)
+ return false;
+
+ CSharedLock lock(m_settingsCritical);
+
+ for (SettingMap::const_iterator it = m_settings.begin(); it != m_settings.end(); ++it)
+ {
+ if (it->second.setting->GetType() == SettingTypeAction)
+ continue;
+
+ std::vector<std::string> parts = StringUtils::Split(it->first, ".");
+ if (parts.size() != 2 || parts.at(0).empty() || parts.at(1).empty())
+ {
+ CLog::Log(LOGWARNING, "CSettingsManager: unable to save setting \"%s\"", it->first.c_str());
+ continue;
+ }
+
+ TiXmlNode *sectionNode = parent->FirstChild(parts.at(0));
+ if (sectionNode == NULL)
+ {
+ TiXmlElement sectionElement(parts.at(0));
+ sectionNode = parent->InsertEndChild(sectionElement);
+
+ if (sectionNode == NULL)
+ {
+ CLog::Log(LOGWARNING, "CSettingsManager: unable to write <%s> tag", parts.at(0).c_str());
+ continue;
+ }
+ }
+
+ TiXmlElement settingElement(parts.at(1));
+ TiXmlNode *settingNode = sectionNode->InsertEndChild(settingElement);
+ if (settingNode == NULL)
+ {
+ CLog::Log(LOGWARNING, "CSetting: unable to write <%s> tag in <%s>", parts.at(1).c_str(), parts.at(0).c_str());
+ continue;
+ }
+
+ TiXmlText value(it->second.setting->ToString());
+ settingNode->InsertEndChild(value);
+ }
+
+ return true;
+}
+
+bool CSettingsManager::Deserialize(const TiXmlNode *node, std::map<std::string, CSetting*> *loadedSettings /* = NULL */)
+{
+ if (node == NULL)
+ return false;
+
+ CSharedLock lock(m_settingsCritical);
+
+ for (SettingMap::iterator it = m_settings.begin(); it != m_settings.end(); ++it)
+ {
+ if (LoadSetting(node, it->second.setting) && loadedSettings != NULL)
+ loadedSettings->insert(make_pair(it->first, it->second.setting));
+ }
+
+ return true;
+}
+
+bool CSettingsManager::OnSettingChanging(const CSetting *setting)
+{
+ if (setting == NULL)
+ return false;
+
+ CSharedLock lock(m_settingsCritical);
+ if (!m_loaded)
+ return true;
+
+ SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
+ if (settingIt == m_settings.end())
+ return false;
+
+ Setting settingData = settingIt->second;
+ // now that we have a copy of the setting's data, we can leave the lock
+ lock.Leave();
+
+ for (CallbackSet::iterator callback = settingData.callbacks.begin();
+ callback != settingData.callbacks.end();
+ ++callback)
+ {
+ if (!(*callback)->OnSettingChanging(setting))
+ return false;
+ }
+
+ return true;
+}
+
+void CSettingsManager::OnSettingChanged(const CSetting *setting)
+{
+ CSharedLock lock(m_settingsCritical);
+ if (!m_loaded || setting == NULL)
+ return;
+
+ SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
+ if (settingIt == m_settings.end())
+ return;
+
+ Setting settingData = settingIt->second;
+ // now that we have a copy of the setting's data, we can leave the lock
+ lock.Leave();
+
+ for (CallbackSet::iterator callback = settingData.callbacks.begin();
+ callback != settingData.callbacks.end();
+ ++callback)
+ (*callback)->OnSettingChanged(setting);
+
+ // now handle any settings which depend on the changed setting
+ const SettingDependencyMap& deps = GetDependencies(setting);
+ for (SettingDependencyMap::const_iterator depsIt = deps.begin(); depsIt != deps.end(); ++depsIt)
+ {
+ for (SettingDependencies::const_iterator depIt = depsIt->second.begin(); depIt != depsIt->second.end(); ++depIt)
+ UpdateSettingByDependency(depsIt->first, *depIt);
+ }
+}
+
+void CSettingsManager::OnSettingAction(const CSetting *setting)
+{
+ CSharedLock lock(m_settingsCritical);
+ if (!m_loaded || setting == NULL)
+ return;
+
+ SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
+ if (settingIt == m_settings.end())
+ return;
+
+ Setting settingData = settingIt->second;
+ // now that we have a copy of the setting's data, we can leave the lock
+ lock.Leave();
+
+ for (CallbackSet::iterator callback = settingData.callbacks.begin();
+ callback != settingData.callbacks.end();
+ ++callback)
+ (*callback)->OnSettingAction(setting);
+}
+
+bool CSettingsManager::OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode)
+{
+ CSharedLock lock(m_settingsCritical);
+ if (setting == NULL)
+ return false;
+
+ SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
+ if (settingIt == m_settings.end())
+ return false;
+
+ Setting settingData = settingIt->second;
+ // now that we have a copy of the setting's data, we can leave the lock
+ lock.Leave();
+
+ bool ret = false;
+ for (CallbackSet::iterator callback = settingData.callbacks.begin();
+ callback != settingData.callbacks.end();
+ ++callback)
+ ret |= (*callback)->OnSettingUpdate(setting, oldSettingId, oldSettingNode);
+
+ return ret;
+}
+
+void CSettingsManager::OnSettingPropertyChanged(const CSetting *setting, const char *propertyName)
+{
+ CSharedLock lock(m_settingsCritical);
+ if (!m_loaded || setting == NULL)
+ return;
+
+ SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
+ if (settingIt == m_settings.end())
+ return;
+
+ Setting settingData = settingIt->second;
+ // now that we have a copy of the setting's data, we can leave the lock
+ lock.Leave();
+
+ for (CallbackSet::iterator callback = settingData.callbacks.begin();
+ callback != settingData.callbacks.end();
+ ++callback)
+ (*callback)->OnSettingPropertyChanged(setting, propertyName);
+}
+
+CSetting* CSettingsManager::CreateSetting(const std::string &settingType, const std::string &settingId, CSettingsManager *settingsManager /* = NULL */) const
+{
+ if (StringUtils::EqualsNoCase(settingType, "boolean"))
+ return new CSettingBool(settingId, const_cast<CSettingsManager*>(this));
+ else if (StringUtils::EqualsNoCase(settingType, "integer"))
+ return new CSettingInt(settingId, const_cast<CSettingsManager*>(this));
+ else if (StringUtils::EqualsNoCase(settingType, "number"))
+ return new CSettingNumber(settingId, const_cast<CSettingsManager*>(this));
+ else if (StringUtils::EqualsNoCase(settingType, "string"))
+ return new CSettingString(settingId, const_cast<CSettingsManager*>(this));
+ else if (StringUtils::EqualsNoCase(settingType, "action"))
+ return new CSettingAction(settingId, const_cast<CSettingsManager*>(this));
+ else if (settingType.size() > 6 &&
+ StringUtils::StartsWith(settingType, "list[") &&
+ StringUtils::EndsWith(settingType, "]"))
+ {
+ std::string elementType = StringUtils::Mid(settingType, 5, settingType.size() - 6);
+ CSetting *elementSetting = CreateSetting(elementType, settingId + ".definition", const_cast<CSettingsManager*>(this));
+ if (elementSetting != NULL)
+ return new CSettingList(settingId, elementSetting, const_cast<CSettingsManager*>(this));
+ }
+
+ CSharedLock lock(m_critical);
+ SettingCreatorMap::const_iterator creator = m_settingCreators.find(settingType);
+ if (creator != m_settingCreators.end())
+ return creator->second->CreateSetting(settingType, settingId, (CSettingsManager*)this);
+
+ return NULL;
+}
+
+ISettingControl* CSettingsManager::CreateControl(const std::string &controlType) const
+{
+ if (controlType.empty())
+ return NULL;
+
+ CSharedLock lock(m_critical);
+ SettingControlCreatorMap::const_iterator creator = m_settingControlCreators.find(controlType);
+ if (creator != m_settingControlCreators.end() && creator->second != NULL)
+ return creator->second->CreateControl(controlType);
+
+ return NULL;
+}
+
+bool CSettingsManager::OnSettingsLoading()
+{
+ CSharedLock lock(m_critical);
+ for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
+ {
+ if (!(*it)->OnSettingsLoading())
+ return false;
+ }
+
+ return true;
+}
+
+void CSettingsManager::OnSettingsLoaded()
+{
+ CSharedLock lock(m_critical);
+ for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
+ (*it)->OnSettingsLoaded();
+}
+
+bool CSettingsManager::OnSettingsSaving() const
+{
+ CSharedLock lock(m_critical);
+ for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
+ {
+ if (!(*it)->OnSettingsSaving())
+ return false;
+ }
+
+ return true;
+}
+
+void CSettingsManager::OnSettingsSaved() const
+{
+ CSharedLock lock(m_critical);
+ for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
+ (*it)->OnSettingsSaved();
+}
+
+void CSettingsManager::OnSettingsCleared()
+{
+ CSharedLock lock(m_critical);
+ for (SettingsHandlers::const_iterator it = m_settingsHandlers.begin(); it != m_settingsHandlers.end(); ++it)
+ (*it)->OnSettingsCleared();
+}
+
+bool CSettingsManager::Load(const TiXmlNode *settings)
+{
+ bool ok = true;
+ CSharedLock lock(m_critical);
+ for (std::set<ISubSettings*>::const_iterator it = m_subSettings.begin(); it != m_subSettings.end(); ++it)
+ ok &= (*it)->Load(settings);
+
+ return ok;
+}
+
+bool CSettingsManager::LoadSetting(const TiXmlNode *node, CSetting *setting)
+{
+ if (node == NULL || setting == NULL)
+ return false;
+
+ if (setting->GetType() == SettingTypeAction)
+ return false;
+
+ const std::string &settingId = setting->GetId();
+
+ std::vector<std::string> parts = StringUtils::Split(settingId, ".");
+ if (parts.size() != 2 || parts.at(0).empty() || parts.at(1).empty())
+ {
+ CLog::Log(LOGWARNING, "CSettingsManager: unable to load setting \"%s\"", settingId.c_str());
+ return false;
+ }
+
+ const TiXmlNode *sectionNode = node->FirstChild(parts.at(0));
+ if (sectionNode == NULL)
+ return false;
+
+ const TiXmlNode *settingNode = sectionNode->FirstChild(parts.at(1));
+ if (settingNode == NULL)
+ return false;
+
+ if (!setting->FromString(settingNode->FirstChild() != NULL ? settingNode->FirstChild()->ValueStr() : StringUtils::Empty))
+ {
+ CLog::Log(LOGWARNING, "CSettingsManager: unable to read value of setting \"%s\"", settingId.c_str());
+ return false;
+ }
+
+ return true;
+}
+
+bool CSettingsManager::UpdateSettings(const TiXmlNode *root)
+{
+ bool updated = false;
+ CSharedLock lock(m_settingsCritical);
+
+ for (SettingMap::iterator setting = m_settings.begin(); setting != m_settings.end(); ++setting)
+ {
+ const std::set<CSettingUpdate>& updates = setting->second.setting->GetUpdates();
+ if (updates.empty())
+ continue;
+
+ for (std::set<CSettingUpdate>::const_iterator update = updates.begin(); update != updates.end(); ++update)
+ updated |= UpdateSetting(root, setting->second.setting, *update);
+ }
+
+ return updated;
+}
+
+bool CSettingsManager::UpdateSetting(const TiXmlNode *node, CSetting *setting, const CSettingUpdate& update)
+{
+ if (node == NULL || setting == NULL || update.GetType() == SettingUpdateTypeNone)
+ return false;
+
+ bool updated = false;
+ const char *oldSetting = NULL;
+ const TiXmlNode *oldSettingNode = NULL;
+ if (update.GetType() == SettingUpdateTypeRename)
+ {
+ if (update.GetValue().empty())
+ return false;
+
+ oldSetting = update.GetValue().c_str();
+ std::vector<std::string> parts = StringUtils::Split(oldSetting, ".");
+ if (parts.size() != 2 || parts.at(0).empty() || parts.at(1).empty())
+ return false;
+
+ const TiXmlNode *sectionNode = node->FirstChild(parts.at(0));
+ if (sectionNode == NULL)
+ return false;
+
+ oldSettingNode = sectionNode->FirstChild(parts.at(1));
+ if (oldSettingNode == NULL)
+ return false;
+
+ if (setting->FromString(oldSettingNode->FirstChild() != NULL ? oldSettingNode->FirstChild()->ValueStr() : StringUtils::Empty))
+ updated = true;
+ else
+ CLog::Log(LOGWARNING, "CSetting: unable to update \"%s\" through automatically renaming from \"%s\"", setting->GetId().c_str(), oldSetting);
+ }
+
+ updated |= OnSettingUpdate(setting, oldSetting, oldSettingNode);
+ return updated;
+}
+
+void CSettingsManager::UpdateSettingByDependency(const std::string &settingId, const CSettingDependency &dependency)
+{
+ CSetting *setting = GetSetting(settingId);
+ if (setting == NULL)
+ return;
+
+ switch (dependency.GetType())
+ {
+ case SettingDependencyTypeEnable:
+ // just trigger the property changed callback and a call to
+ // CSetting::IsEnabled() will automatically determine the new
+ // enabled state
+ OnSettingPropertyChanged(setting, "enabled");
+ break;
+
+ case SettingDependencyTypeUpdate:
+ {
+ SettingType type = (SettingType)setting->GetType();
+ if (type == SettingTypeInteger)
+ {
+ CSettingInt *settingInt = ((CSettingInt*)setting);
+ if (settingInt->GetOptionsType() == SettingOptionsTypeDynamic)
+ settingInt->UpdateDynamicOptions();
+ }
+ else if (type == SettingTypeString)
+ {
+ CSettingString *settingString = ((CSettingString*)setting);
+ if (settingString->GetOptionsType() == SettingOptionsTypeDynamic)
+ settingString->UpdateDynamicOptions();
+ }
+ break;
+ }
+
+ case SettingDependencyTypeVisible:
+ // just trigger the property changed callback and a call to
+ // CSetting::IsVisible() will automatically determine the new
+ // visible state
+ OnSettingPropertyChanged(setting, "visible");
+ break;
+
+ case SettingDependencyTypeNone:
+ default:
+ break;
+ }
+}
+
+void CSettingsManager::RegisterSettingOptionsFiller(const std::string &identifier, void *filler, SettingOptionsFillerType type)
+{
+ CExclusiveLock lock(m_critical);
+ SettingOptionsFillerMap::const_iterator it = m_optionsFillers.find(identifier);
+ if (it != m_optionsFillers.end())
+ return;
+
+ SettingOptionsFiller optionsFiller = { filler, type };
+ m_optionsFillers.insert(make_pair(identifier, optionsFiller));
+}
--- /dev/null
+#pragma once
+/*
+ * Copyright (C) 2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <map>
+#include <set>
+#include <vector>
+
+#include "ISetting.h"
+#include "ISettingCallback.h"
+#include "ISettingControlCreator.h"
+#include "ISettingCreator.h"
+#include "ISettingsHandler.h"
+#include "ISubSettings.h"
+#include "SettingConditions.h"
+#include "SettingDependency.h"
+#include "threads/SharedSection.h"
+
+class CSettingSection;
+class CSettingUpdate;
+
+class TiXmlElement;
+class TiXmlNode;
+
+typedef void (*IntegerSettingOptionsFiller)(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int ¤t);
+typedef void (*StringSettingOptionsFiller)(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t);
+
+/*!
+ \ingroup settings
+ \brief Settings manager responsible for initializing, loading and handling
+ all settings.
+ */
+class CSettingsManager : public ISettingCreator, public ISettingControlCreator,
+ private ISettingCallback,
+ private ISettingsHandler, private ISubSettings
+{
+public:
+ /*!
+ \brief Creates a new (uninitialized) settings manager.
+ */
+ CSettingsManager();
+ virtual ~CSettingsManager();
+
+ // implementation of ISettingCreator
+ virtual CSetting* CreateSetting(const std::string &settingType, const std::string &settingId, CSettingsManager *settingsManager = NULL) const;
+
+ // implementation of ISettingControlCreator
+ virtual ISettingControl* CreateControl(const std::string &controlType) const;
+
+ /*!
+ \brief Initializes the settings manager using the setting definitions
+ represented by the given XML element.
+
+ \param root XML element representing setting definitions
+ \return True if the XML element was successfully deserialized into setting definitions, false otherwise
+ */
+ bool Initialize(const TiXmlElement *root);
+ /*!
+ \brief Loads setting values from the given XML element.
+
+ \param root XML element containing setting values
+ \param updated Whether some settings were automatically updated
+ \param triggerEvents Whether to trigger ISettingCallback methods
+ \param loadedSettings A list to fill with all the successfully loaded settings
+ \return True if the setting values were successfully loaded, false otherwise
+ */
+ bool Load(const TiXmlElement *root, bool &updated, bool triggerEvents = true, std::map<std::string, CSetting*> *loadedSettings = NULL);
+ /*!
+ \brief Saves the setting values to the given XML node.
+
+ \param root XML node
+ \return True if the setting values were successfully saved, false otherwise
+ */
+ virtual bool Save(TiXmlNode *root) const;
+ /*!
+ \brief Unloads the previously loaded setting values.
+
+ The values of all the settings are reset to their default values.
+ */
+ void Unload();
+ /*!
+ \brief Clears the complete settings manager.
+
+ This removes all initialized settings, groups, categories and sections and
+ returns to the uninitialized state. Any registered callbacks or
+ implementations stay registered.
+ */
+ void Clear();
+
+ /*!
+ \brief Loads the setting being represented by the given XML node with the
+ given identifier.
+
+ \param node XML node representing the setting to load
+ \param settingId Setting identifier
+ \return True if the setting was successfully loaded from the given XML node, false otherwise
+ */
+ bool LoadSetting(const TiXmlNode *node, const std::string &settingId);
+
+ /*!
+ \brief Tells the settings system that the initialization is complete.
+
+ Setting values can only be loaded after a complete and successful
+ initialization of the settings system.
+ */
+ void SetInitialized();
+ /*!
+ \brief Tells the settings system that all setting values
+ have been loaded.
+
+ This manual trigger is necessary to enable the ISettingCallback methods
+ being executed.
+ */
+ void SetLoaded() { m_loaded = true; }
+
+ /*!
+ \brief Registers the given ISettingCallback implementation to be triggered
+ for the given list of settings.
+
+ \param settingsHandler ISettingsHandler implementation
+ \param settingList List of settings to trigger the given ISettingCallback implementation
+ */
+ void RegisterCallback(ISettingCallback *callback, const std::set<std::string> &settingList);
+ /*!
+ \brief Unregisters the given ISettingCallback implementation.
+
+ \param callback ISettingCallback implementation
+ */
+ void UnregisterCallback(ISettingCallback *callback);
+
+ /*!
+ \brief Registers a custom setting type and its ISettingCreator
+ implementation.
+
+ When a setting definition for a registered custom setting type is found its
+ ISettingCreator implementation is called to create and deserialize the
+ setting definition.
+
+ \param settingType String representation of the custom setting type
+ \param settingCreator ISettingCreator implementation
+ */
+ void RegisterSettingType(const std::string &settingType, ISettingCreator *settingCreator);
+
+ /*!
+ \brief Registers a custom setting control type and its
+ ISettingControlCreator implementation
+
+ When a setting control definition for a registered custom setting control
+ type is found its ISettingControlCreator implementation is called to create
+ and deserialize the setting control definition.
+
+ \param controlType String representation of the custom setting control type
+ \param settingControlCreator ISettingControlCreator implementation
+ */
+ void RegisterSettingControl(const std::string &controlType, ISettingControlCreator *settingControlCreator);
+
+ /*!
+ \brief Registers the given ISettingsHandler implementation.
+
+ \param settingsHandler ISettingsHandler implementation
+ */
+ void RegisterSettingsHandler(ISettingsHandler *settingsHandler);
+ /*!
+ \brief Unregisters the given ISettingsHandler implementation.
+
+ \param settingsHandler ISettingsHandler implementation
+ */
+ void UnregisterSettingsHandler(ISettingsHandler *settingsHandler);
+
+ /*!
+ \brief Registers the given ISubSettings implementation.
+
+ \param subSettings ISubSettings implementation
+ */
+ void RegisterSubSettings(ISubSettings *subSettings);
+ /*!
+ \brief Unregisters the given ISubSettings implementation.
+
+ \param subSettings ISubSettings implementation
+ */
+ void UnregisterSubSettings(ISubSettings *subSettings);
+
+ /*!
+ \brief Registers the given integer setting options filler under the given identifier.
+
+ \param identifier Setting options filler identifier
+ \param optionsFiller Integer setting options filler implementation
+ */
+ void RegisterSettingOptionsFiller(const std::string &identifier, IntegerSettingOptionsFiller optionsFiller);
+ /*!
+ \brief Registers the given string setting options filler under the given identifier.
+
+ \param identifier Setting options filler identifier
+ \param optionsFiller String setting options filler implementation
+ */
+ void RegisterSettingOptionsFiller(const std::string &identifier, StringSettingOptionsFiller optionsFiller);
+ /*!
+ \brief Unregisters the setting options filler registered under the given identifier.
+
+ \param identifier Setting options filler identifier
+ */
+ void UnregisterSettingOptionsFiller(const std::string &identifier);
+ /*!
+ \brief Gets the implementation of the setting options filler used by the
+ given setting.
+
+ \param setting Setting object
+ \return Implementation of the setting options filler (either IntegerSettingOptionsFiller or StringSettingOptionsFiller)
+ */
+ void* GetSettingOptionsFiller(const CSetting *setting);
+
+ /*!
+ \brief Gets the setting with the given identifier.
+
+ \param id Setting identifier
+ \return Setting object with the given identifier or NULL if the identifier is unknown
+ */
+ CSetting* GetSetting(const std::string &id) const;
+ /*!
+ \brief Gets the full list of setting sections.
+
+ \return List of setting sections
+ */
+ std::vector<CSettingSection*> GetSections() const;
+ /*!
+ \brief Gets the setting section with the given identifier.
+
+ \param section Setting section identifier
+ \return Setting section with the given identifier or NULL if the identifier is unknown
+ */
+ CSettingSection* GetSection(const std::string §ion) const;
+ /*!
+ \brief Gets a map of settings (and their dependencies) which depend on
+ the setting with the given identifier.
+
+ It is important to note that the returned dependencies are not the
+ dependencies of the setting with the given identifier but the settings
+ (and their dependencies) which depend on the setting with the given
+ identifier.
+
+ \param id Setting identifier
+ \return Map of settings (and their dependencies) which depend on the setting with the given identifier
+ */
+ SettingDependencyMap GetDependencies(const std::string &id) const;
+ /*!
+ \brief Gets a map of settings (and their dependencies) which depend on
+ the given setting.
+
+ It is important to note that the returned dependencies are not the
+ dependencies of the given setting but the settings (and their dependencies)
+ which depend on the given setting.
+
+ \param setting Setting object
+ \return Map of settings (and their dependencies) which depend on the given setting
+ */
+ SettingDependencyMap GetDependencies(const CSetting *setting) const;
+
+ /*!
+ \brief Gets the boolean value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \return Boolean value of the setting with the given identifier
+ */
+ bool GetBool(const std::string &id) const;
+ /*!
+ \brief Gets the integer value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \return Integer value of the setting with the given identifier
+ */
+ int GetInt(const std::string &id) const;
+ /*!
+ \brief Gets the real number value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \return Real number value of the setting with the given identifier
+ */
+ double GetNumber(const std::string &id) const;
+ /*!
+ \brief Gets the string value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \return String value of the setting with the given identifier
+ */
+ std::string GetString(const std::string &id) const;
+ /*!
+ \brief Gets the values of the list setting with the given identifier.
+
+ \param id Setting identifier
+ \return List of values of the setting with the given identifier
+ */
+ std::vector< boost::shared_ptr<CSetting> > GetList(const std::string &id) const;
+
+ /*!
+ \brief Sets the boolean value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \param value Boolean value to set
+ \return True if setting the value was successful, false otherwise
+ */
+ bool SetBool(const std::string &id, bool value);
+ /*!
+ \brief Toggles the boolean value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \return True if toggling the boolean value was successful, false otherwise
+ */
+ bool ToggleBool(const std::string &id);
+ /*!
+ \brief Sets the integer value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \param value Integer value to set
+ \return True if setting the value was successful, false otherwise
+ */
+ bool SetInt(const std::string &id, int value);
+ /*!
+ \brief Sets the real number value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \param value Real number value to set
+ \return True if setting the value was successful, false otherwise
+ */
+ bool SetNumber(const std::string &id, double value);
+ /*!
+ \brief Sets the string value of the setting with the given identifier.
+
+ \param id Setting identifier
+ \param value String value to set
+ \return True if setting the value was successful, false otherwise
+ */
+ bool SetString(const std::string &id, const std::string &value);
+ /*!
+ \brief Sets the values of the list setting with the given identifier.
+
+ \param id Setting identifier
+ \param value Values to set
+ \return True if setting the values was successful, false otherwise
+ */
+ bool SetList(const std::string &id, const std::vector< boost::shared_ptr<CSetting> > &value);
+
+ /*!
+ \brief Gets the setting conditions manager used by the settings manager.
+
+ \return Setting conditions manager used by the settings manager.
+ */
+ const CSettingConditionsManager& GetConditions() const { return m_conditions; }
+ /*!
+ \brief Adds the given static condition.
+
+ A static condition is just a string. If a static condition is evaluated,
+ the result depends on whether the condition's value is defined or not.
+
+ \param condition Static condition string/value
+ */
+ void AddCondition(const std::string &condition);
+ /*!
+ \brief Adds the given dynamic condition.
+
+ A dynamic condition has an identifier and an implementation which is
+ triggered when the condition is evaluated.
+
+ \param identifier Identifier of the dynamic condition
+ \param condition Implementation of the dynamic condition
+ */
+ void AddCondition(const std::string &identifier, SettingConditionCheck condition);
+
+private:
+ // implementation of ISettingCallback
+ virtual bool OnSettingChanging(const CSetting *setting);
+ virtual void OnSettingChanged(const CSetting *setting);
+ virtual void OnSettingAction(const CSetting *setting);
+ virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode);
+ virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName);
+
+ // implementation of ISettingsHandler
+ virtual bool OnSettingsLoading();
+ virtual void OnSettingsLoaded();
+ virtual bool OnSettingsSaving() const;
+ virtual void OnSettingsSaved() const;
+ virtual void OnSettingsCleared();
+
+ // implementation of ISubSettings
+ virtual bool Load(const TiXmlNode *settings);
+
+ bool Serialize(TiXmlNode *parent) const;
+ bool Deserialize(const TiXmlNode *node, std::map<std::string, CSetting*> *loadedSettings = NULL);
+
+ static bool LoadSetting(const TiXmlNode *node, CSetting *setting);
+ bool UpdateSettings(const TiXmlNode *root);
+ bool UpdateSetting(const TiXmlNode *node, CSetting *setting, const CSettingUpdate& update);
+ void UpdateSettingByDependency(const std::string &settingId, const CSettingDependency &dependency);
+
+ typedef enum {
+ SettingOptionsFillerTypeNone = 0,
+ SettingOptionsFillerTypeInteger,
+ SettingOptionsFillerTypeString
+ } SettingOptionsFillerType;
+
+ void RegisterSettingOptionsFiller(const std::string &identifier, void *filler, SettingOptionsFillerType type);
+
+ typedef std::set<ISettingCallback *> CallbackSet;
+ typedef struct {
+ CSetting *setting;
+ SettingDependencyMap dependencies;
+ CallbackSet callbacks;
+ } Setting;
+
+ bool m_initialized;
+ bool m_loaded;
+
+ typedef std::map<std::string, Setting> SettingMap;
+ SettingMap m_settings;
+ typedef std::map<std::string, CSettingSection*> SettingSectionMap;
+ SettingSectionMap m_sections;
+
+ typedef std::map<std::string, ISettingCreator*> SettingCreatorMap;
+ SettingCreatorMap m_settingCreators;
+
+ typedef std::map<std::string, ISettingControlCreator*> SettingControlCreatorMap;
+ SettingControlCreatorMap m_settingControlCreators;
+
+ std::set<ISubSettings*> m_subSettings;
+ typedef std::vector<ISettingsHandler*> SettingsHandlers;
+ SettingsHandlers m_settingsHandlers;
+
+ CSettingConditionsManager m_conditions;
+
+ typedef struct {
+ void *filler;
+ SettingOptionsFillerType type;
+ } SettingOptionsFiller;
+ typedef std::map<std::string, SettingOptionsFiller> SettingOptionsFillerMap;
+ SettingOptionsFillerMap m_optionsFillers;
+
+ CSharedSection m_critical;
+ CSharedSection m_settingsCritical;
+};
#include "settings/SettingPath.h"
#include "settings/Settings.h"
#include "settings/MediaSourceSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "storage/MediaManager.h"
#include "utils/StringUtils.h"
CFileItemList options;
if (!GetItems(m_pSetting, options) || options.Size() <= 1)
return false;
+
+ const CSettingControlList *control = static_cast<const CSettingControlList*>(m_pSetting->GetControl());
dialog->Reset();
dialog->SetHeading(g_localizeStrings.Get(m_pSetting->GetLabel()));
dialog->SetItems(&options);
- dialog->SetMultiSelection(false);
+ dialog->SetMultiSelection(control->CanMultiSelect());
dialog->DoModal();
if (!dialog->IsConfirmed())
return false;
- const CFileItemPtr item = dialog->GetSelectedItem();
- if (item == NULL || !item->HasProperty("value"))
- return false;
-
- CVariant value = item->GetProperty("value");
+ const CFileItemList &items = dialog->GetSelectedItems();
+ std::vector<CVariant> values;
+ for (int index = 0; index < items.Size(); index++)
+ {
+ const CFileItemPtr item = items[index];
+ if (item == NULL || !item->HasProperty("value"))
+ return false;
+
+ values.push_back(item->GetProperty("value"));
+ }
+
+ bool ret = false;
switch (m_pSetting->GetType())
{
case SettingTypeInteger:
- return ((CSettingInt *)m_pSetting)->SetValue((int)value.asInteger());
-
+ if (values.size() > 1)
+ return false;
+ ret = ((CSettingInt *)m_pSetting)->SetValue((int)values.at(0).asInteger());
+ break;
+
case SettingTypeString:
- return ((CSettingString *)m_pSetting)->SetValue(value.asString());
+ if (values.size() > 1)
+ return false;
+ ret = ((CSettingString *)m_pSetting)->SetValue(values.at(0).asString());
+ break;
+
+ case SettingTypeList:
+ ret = CSettings::Get().SetList(m_pSetting->GetId(), values);
+ break;
default:
break;
}
- return true;
+ if (ret)
+ Update();
+
+ return ret;
}
void CGUIControlListSetting::Update()
CFileItemList options;
if (GetItems(m_pSetting, options))
{
+ std::vector<std::string> labels;
for (int index = 0; index < options.Size(); index++)
{
const CFileItemPtr pItem = options.Get(index);
if (pItem->IsSelected())
- {
- m_pButton->SetLabel2(pItem->GetLabel());
- break;
- }
+ labels.push_back(pItem->GetLabel());
}
+
+ m_pButton->SetLabel2(StringUtils::Join(labels, ", "));
}
// disable the control if it has less than two items
return pItem;
}
-bool CGUIControlListSetting::GetItems(CSetting *setting, CFileItemList &items)
+bool CGUIControlListSetting::GetItems(const CSetting *setting, CFileItemList &items)
{
const CSettingControlList *control = static_cast<const CSettingControlList*>(setting->GetControl());
const std::string &controlFormat = control->GetFormat();
+
if (controlFormat == "integer")
return GetIntegerItems(setting, items);
else if (controlFormat == "string")
{
- if (setting->GetType() == SettingTypeInteger)
+ if (setting->GetType() == SettingTypeInteger ||
+ (setting->GetType() == SettingTypeList && ((CSettingList *)setting)->GetElementType() == SettingTypeInteger))
return GetIntegerItems(setting, items);
- else if (setting->GetType() == SettingTypeString)
- {
- CSettingString *pSettingString = (CSettingString *)setting;
- if (pSettingString->GetOptionsType() == SettingOptionsTypeDynamic)
- {
- DynamicStringSettingOptions options = pSettingString->UpdateDynamicOptions();
- for (DynamicStringSettingOptions::const_iterator option = options.begin(); option != options.end(); ++option)
- {
- CFileItemPtr pItem = GetItem(option->first, option->second);
-
- if (StringUtils::EqualsNoCase(option->second, pSettingString->GetValue()))
- pItem->Select(true);
-
- items.Add(pItem);
- }
- }
- }
+ else if (setting->GetType() == SettingTypeString ||
+ (setting->GetType() == SettingTypeList && ((CSettingList *)setting)->GetElementType() == SettingTypeString))
+ return GetStringItems(setting, items);
}
else
return false;
return true;
}
-bool CGUIControlListSetting::GetIntegerItems(CSetting *setting, CFileItemList &items)
+bool CGUIControlListSetting::GetIntegerItems(const CSetting *setting, CFileItemList &items)
{
- CSettingInt *pSettingInt = (CSettingInt *)setting;
+ const CSettingInt *pSettingInt = NULL;
+ std::set<int> values;
+ if (setting->GetType() == SettingTypeInteger)
+ {
+ pSettingInt = static_cast<const CSettingInt*>(setting);
+ values.insert(pSettingInt->GetValue());
+ }
+ else if (setting->GetType() == SettingTypeList)
+ {
+ const CSettingList *settingList = static_cast<const CSettingList*>(setting);
+ if (settingList->GetElementType() != SettingTypeInteger)
+ return false;
+
+ pSettingInt = static_cast<const CSettingInt*>(settingList->GetDefinition());
+ std::vector<CVariant> list = CSettings::Get().GetList(settingList->GetId());
+ for (std::vector<CVariant>::const_iterator itValue = list.begin(); itValue != list.end(); ++itValue)
+ {
+ if (!itValue->isInteger())
+ return false;
+ values.insert(itValue->asInteger());
+ }
+ }
+ else
+ return false;
+
switch (pSettingInt->GetOptionsType())
{
case SettingOptionsTypeStatic:
{
CFileItemPtr pItem = GetItem(g_localizeStrings.Get(it->first), it->second);
- if (it->second == pSettingInt->GetValue())
+ if (values.find(it->second) != values.end())
pItem->Select(true);
items.Add(pItem);
case SettingOptionsTypeDynamic:
{
- DynamicIntegerSettingOptions options = pSettingInt->UpdateDynamicOptions();
+ DynamicIntegerSettingOptions options = const_cast<CSettingInt*>(pSettingInt)->UpdateDynamicOptions();
for (DynamicIntegerSettingOptions::const_iterator option = options.begin(); option != options.end(); ++option)
{
CFileItemPtr pItem = GetItem(option->first, option->second);
- if (option->second == pSettingInt->GetValue())
+ if (values.find(option->second) != values.end())
pItem->Select(true);
items.Add(pItem);
return true;
}
+bool CGUIControlListSetting::GetStringItems(const CSetting *setting, CFileItemList &items)
+{
+ const CSettingString *pSettingString = NULL;
+ std::set<std::string> values;
+ if (setting->GetType() == SettingTypeString)
+ {
+ pSettingString = static_cast<const CSettingString*>(setting);
+ values.insert(pSettingString->GetValue());
+ }
+ else if (setting->GetType() == SettingTypeList)
+ {
+ const CSettingList *settingList = static_cast<const CSettingList*>(setting);
+ if (settingList->GetElementType() != SettingTypeString)
+ return false;
+
+ pSettingString = static_cast<const CSettingString*>(settingList->GetDefinition());
+ std::vector<CVariant> list = CSettings::Get().GetList(settingList->GetId());
+ for (std::vector<CVariant>::const_iterator itValue = list.begin(); itValue != list.end(); ++itValue)
+ {
+ if (!itValue->isString())
+ return false;
+ values.insert(itValue->asString());
+ }
+ }
+ else
+ return false;
+
+ if (pSettingString->GetOptionsType() == SettingOptionsTypeDynamic)
+ {
+ DynamicStringSettingOptions options = const_cast<CSettingString*>(pSettingString)->UpdateDynamicOptions();
+ for (DynamicStringSettingOptions::const_iterator option = options.begin(); option != options.end(); ++option)
+ {
+ CFileItemPtr pItem = GetItem(option->first, option->second);
+
+ if (values.find(option->second) != values.end())
+ pItem->Select(true);
+
+ items.Add(pItem);
+ }
+ }
+ else
+ return false;
+
+ return true;
+}
+
CGUIControlButtonSetting::CGUIControlButtonSetting(CGUIButtonControl *pButton, int id, CSetting *pSetting)
: CGUIControlBaseSetting(id, pSetting)
{
virtual void Update();
virtual void Clear() { m_pButton = NULL; }
private:
- static bool GetItems(CSetting *setting, CFileItemList &items);
- static bool GetIntegerItems(CSetting *setting, CFileItemList &items);
+ static bool GetItems(const CSetting *setting, CFileItemList &items);
+ static bool GetIntegerItems(const CSetting *setting, CFileItemList &items);
+ static bool GetStringItems(const CSetting *setting, CFileItemList &items);
CGUIButtonControl *m_pButton;
};
}
// create the proper controls
+ if (!pSetting->GetControl())
+ return NULL;
+
std::string controlType = pSetting->GetControl()->GetType();
if (controlType == "toggle")
{
#include "GUIControlSettings.h"
#include "guilib/GUIWindow.h"
-#include "settings/SettingDependency.h"
-#include "settings/SettingSection.h"
+#include "settings/lib/SettingDependency.h"
+#include "settings/lib/SettingSection.h"
#include "settings/Settings.h"
-#include "settings/SettingsManager.h"
+#include "settings/lib/SettingsManager.h"
#include "threads/Timer.h"
typedef boost::shared_ptr<CGUIControlBaseSetting> BaseSettingControlPtr;
SRCS= \
TestBasicEnvironment.cpp \
TestFileItem.cpp \
- TestTextureCache.cpp \
+ TestTextureUtils.cpp \
TestURL.cpp \
TestUtils.cpp \
xbmc-test.cpp
+++ /dev/null
-/*
- * Copyright (C) 2012-2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "URL.h"
-#include "TextureCache.h"
-
-#include "gtest/gtest.h"
-
-TEST(TestTextureCache, GetWrappedImageURL)
-{
- typedef struct
- {
- const char *in;
- const char *type;
- const char *options;
- const char *out;
- } testfiles;
-
- const testfiles test_files[] = {{ "/path/to/image/file.jpg", "", "", "image://%2fpath%2fto%2fimage%2ffile.jpg/" },
- { "/path/to/image/file.jpg", "", "size=thumb", "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb" },
- { "/path/to/video/file.mkv", "video", "", "image://video@%2fpath%2fto%2fvideo%2ffile.mkv/" },
- { "/path/to/music/file.mp3", "music", "", "image://music@%2fpath%2fto%2fmusic%2ffile.mp3/" },
- { "image://%2fpath%2fto%2fimage%2ffile.jpg/", "", "", "image://%2fpath%2fto%2fimage%2ffile.jpg/" },
- { "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb", "", "size=thumb", "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb" }};
-
- for (unsigned int i = 0; i < sizeof(test_files) / sizeof(testfiles); i++)
- {
- std::string expected = test_files[i].out;
- std::string out = CTextureCache::GetWrappedImageURL(test_files[i].in, test_files[i].type, test_files[i].options);
- EXPECT_EQ(out, expected);
- }
-}
--- /dev/null
+/*
+ * Copyright (C) 2012-2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "URL.h"
+#include "TextureDatabase.h"
+
+#include "gtest/gtest.h"
+
+using ::testing::ValuesIn;
+
+namespace
+{
+typedef struct
+{
+ const char *in;
+ const char *type;
+ const char *options;
+ const char *out;
+} TestFiles;
+
+const TestFiles test_files[] = {{ "/path/to/image/file.jpg", "", "", "image://%2fpath%2fto%2fimage%2ffile.jpg/" },
+ { "/path/to/image/file.jpg", "", "size=thumb", "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb" },
+ { "/path/to/video/file.mkv", "video", "", "image://video@%2fpath%2fto%2fvideo%2ffile.mkv/" },
+ { "/path/to/music/file.mp3", "music", "", "image://music@%2fpath%2fto%2fmusic%2ffile.mp3/" },
+ { "image://%2fpath%2fto%2fimage%2ffile.jpg/", "", "", "image://%2fpath%2fto%2fimage%2ffile.jpg/" },
+ { "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb", "", "size=thumb", "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb" }};
+
+
+class TestTextureUtils :
+ public ::testing::TestWithParam<TestFiles>
+{
+};
+
+TEST_P(TestTextureUtils, GetWrappedImageURL)
+{
+ const TestFiles &testFiles(GetParam());
+
+ std::string expected = testFiles.out;
+ std::string out = CTextureUtils::GetWrappedImageURL(testFiles.in,
+ testFiles.type,
+ testFiles.options);
+ EXPECT_EQ(expected, out);
+}
+
+INSTANTIATE_TEST_CASE_P(SampleFiles, TestTextureUtils,
+ ValuesIn(test_files));
+}
if (has_aml)
CLog::Log(LOGNOTICE, "aml_present, rtn(%d)", rtn);
}
- return has_aml;
+ return has_aml == 1;
+}
+
+bool aml_wired_present()
+{
+ static int has_wired = -1;
+ if (has_wired == -1)
+ {
+ char test[64] = {0};
+ if (aml_get_sysfs_str("/sys/class/net/eth0/operstate", test, 63) != -1)
+ has_wired = 1;
+ else
+ has_wired = 0;
+ }
+ return has_wired == 1;
+}
+
+void aml_permissions()
+{
+ // most all aml devices are already rooted.
+ int ret = system("ls /system/xbin/su");
+ if (ret != 0)
+ {
+ CLog::Log(LOGWARNING, "aml_permissions: missing su, playback might fail");
+ }
+ else
+ {
+ // certain aml devices have 664 permission, we need 666.
+ system("su -c chmod 666 /sys/class/video/axis");
+ system("su -c chmod 666 /sys/class/video/screen_mode");
+ system("su -c chmod 666 /sys/class/video/disable_video");
+ system("su -c chmod 666 /sys/class/tsync/pts_pcrscr");
+ system("su -c chmod 666 /sys/class/audiodsp/digital_raw");
+ system("su -c chmod 666 /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq");
+ system("su -c chmod 666 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq");
+ system("su -c chmod 666 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor");
+ CLog::Log(LOGINFO, "aml_permissions: permissions changed");
+ }
}
int aml_get_cputype()
return aml_cputype;
}
-void aml_cpufreq_limit(bool limit)
+void aml_cpufreq_min(bool limit)
+{
+// do not touch scaling_min_freq on android
+#if !defined(TARGET_ANDROID)
+ // only needed for m1/m3 SoCs
+ if (aml_get_cputype() <= 3)
+ {
+ int cpufreq = 300000;
+ if (limit)
+ cpufreq = 600000;
+
+ aml_set_sysfs_int("/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", cpufreq);
+ }
+#endif
+}
+
+void aml_cpufreq_max(bool limit)
{
- int cpufreq = 300000;
- if (limit)
- cpufreq = 600000;
+ if (!aml_wired_present() && aml_get_cputype() > 3)
+ {
+ // this is a MX Stick, they cannot substain 1GHz
+ // operation without overheating so limit them to 800MHz.
+ int cpufreq = 1000000;
+ if (limit)
+ cpufreq = 800000;
- aml_set_sysfs_int("/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", cpufreq);
+ aml_set_sysfs_int("/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq", cpufreq);
+ aml_set_sysfs_str("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", "ondemand");
+ }
}
void aml_set_audio_passthrough(bool passthrough)
{
if (aml_present())
{
+ // m1 uses 1, m3 and above uses 2
int raw = aml_get_cputype() < 3 ? 1:2;
aml_set_sysfs_int("/sys/class/audiodsp/digital_raw", passthrough ? raw:0);
}
int aml_get_sysfs_int(const char *path);
bool aml_present();
+void aml_permissions();
+bool aml_wired_present();
int aml_get_cputype();
-void aml_cpufreq_limit(bool limit);
+void aml_cpufreq_min(bool limit);
+void aml_cpufreq_max(bool limit);
void aml_set_audio_passthrough(bool passthrough);
return ret;
}
+////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////////////////////
+void CBitstreamConverter::init_bits_writer(bits_writer_t *s, uint8_t *buffer, int buffer_size, int writer_le)
+{
+ if (buffer_size < 0)
+ {
+ buffer_size = 0;
+ buffer = NULL;
+ }
+
+ s->size_in_bits = 8 * buffer_size;
+ s->buf = buffer;
+ s->buf_end = s->buf + buffer_size;
+ s->buf_ptr = s->buf;
+ s->bit_left = 32;
+ s->bit_buf = 0;
+ s->writer_le = writer_le;
+}
+
+void CBitstreamConverter::write_bits(bits_writer_t *s, int n, unsigned int value)
+{
+ // Write up to 32 bits into a bitstream.
+ unsigned int bit_buf;
+ int bit_left;
+
+ if (n == 32)
+ {
+ // Write exactly 32 bits into a bitstream.
+ // danger, recursion in play.
+ int lo = value & 0xffff;
+ int hi = value >> 16;
+ if (s->writer_le)
+ {
+ write_bits(s, 16, lo);
+ write_bits(s, 16, hi);
+ }
+ else
+ {
+ write_bits(s, 16, hi);
+ write_bits(s, 16, lo);
+ }
+ return;
+ }
+
+ bit_buf = s->bit_buf;
+ bit_left = s->bit_left;
+
+ if (s->writer_le)
+ {
+ bit_buf |= value << (32 - bit_left);
+ if (n >= bit_left) {
+ BS_WL32(s->buf_ptr, bit_buf);
+ s->buf_ptr += 4;
+ bit_buf = (bit_left == 32) ? 0 : value >> bit_left;
+ bit_left += 32;
+ }
+ bit_left -= n;
+ }
+ else
+ {
+ if (n < bit_left) {
+ bit_buf = (bit_buf << n) | value;
+ bit_left -= n;
+ } else {
+ bit_buf <<= bit_left;
+ bit_buf |= value >> (n - bit_left);
+ BS_WB32(s->buf_ptr, bit_buf);
+ s->buf_ptr += 4;
+ bit_left += 32 - n;
+ bit_buf = value;
+ }
+ }
+
+ s->bit_buf = bit_buf;
+ s->bit_left = bit_left;
+}
+
+void CBitstreamConverter::skip_bits(bits_writer_t *s, int n)
+{
+ // Skip the given number of bits.
+ // Must only be used if the actual values in the bitstream do not matter.
+ // If n is 0 the behavior is undefined.
+ s->bit_left -= n;
+ s->buf_ptr -= 4 * (s->bit_left >> 5);
+ s->bit_left &= 31;
+}
+
+void CBitstreamConverter::flush_bits(bits_writer_t *s)
+{
+ if (!s->writer_le)
+ {
+ if (s->bit_left < 32)
+ s->bit_buf <<= s->bit_left;
+ }
+ while (s->bit_left < 32)
+ {
+
+ if (s->writer_le)
+ {
+ *s->buf_ptr++ = s->bit_buf;
+ s->bit_buf >>= 8;
+ }
+ else
+ {
+ *s->buf_ptr++ = s->bit_buf >> 24;
+ s->bit_buf <<= 8;
+ }
+ s->bit_left += 8;
+ }
+ s->bit_left = 32;
+ s->bit_buf = 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////////////////////
bool CBitstreamConverter::mpeg2_sequence_header(const uint8_t *data, const uint32_t size, mpeg2_sequence *sequence)
{
// parse nal's until a sequence_header_code is found
#include "DllAvCodec.h"
typedef struct {
+ int writer_le;
+ uint32_t bit_buf;
+ int bit_left;
+ uint8_t *buf, *buf_ptr, *buf_end;
+ int size_in_bits;
+} bits_writer_t;
+
+typedef struct {
uint8_t *buffer, *start;
int offbits, length, oflow;
} bits_reader_t;
((uint8_t*)(p))[1] = (d) >> 16; \
((uint8_t*)(p))[0] = (d) >> 24; }
+#define BS_WL32(p, d) { \
+ ((uint8_t*)(p))[0] = (d); \
+ ((uint8_t*)(p))[1] = (d) >> 8; \
+ ((uint8_t*)(p))[2] = (d) >> 16; \
+ ((uint8_t*)(p))[3] = (d) >> 24; }
+
typedef struct
{
const uint8_t *data;
static void skip_bits( bits_reader_t *br, int nbits );
static uint32_t get_bits( bits_reader_t *br, int nbits );
+ static void init_bits_writer(bits_writer_t *s, uint8_t *buffer, int buffer_size, int writer_le);
+ static void write_bits(bits_writer_t *s, int n, unsigned int value);
+ static void skip_bits( bits_writer_t *s, int n);
+ static void flush_bits(bits_writer_t *s);
+
static void parseh264_sps(const uint8_t *sps, const uint32_t sps_size, bool *interlaced, int32_t *max_ref_frames);
static bool mpeg2_sequence_header(const uint8_t *data, const uint32_t size, mpeg2_sequence *sequence);
#include <fribidi/fribidi.h>
#include "LangInfo.h"
#include "guilib/LocalizeStrings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "threads/SingleLock.h"
#include "log.h"
*
*/
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "threads/CriticalSection.h"
#include "utils/GlobalsHandling.h"
#include "utils/uXstrings.h"
#include "filesystem/File.h"
#include "interfaces/Builtins.h"
#include "profiles/ProfilesManager.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "threads/SingleLock.h"
#include "utils/log.h"
#include "utils/RssReader.h"
#include "threads/CriticalSection.h"
-#include "settings/ISettingCallback.h"
-#include "settings/ISettingsHandler.h"
+#include "settings/lib/ISettingCallback.h"
+#include "settings/lib/ISettingsHandler.h"
class CRssReader;
class IRssObserver;
#include "md5.h"
#include "InfoLoader.h"
-#include "settings/ISubSettings.h"
+#include "settings/lib/ISubSettings.h"
#define KB (1024) // 1 KiloByte (1KB) 1024 Byte (2^10 Byte)
#define MB (1024*KB) // 1 MegaByte (1MB) 1024 KB (2^10 KB)
if (strPath.size() > i->second.size())
return URIUtils::AddFileToFolder(i->first, strPath.Mid(i->second.size()));
else
- return i->second;
+ return i->first;
}
}
}
#include "Temperature.h"
#include "network/Network.h"
#include "Application.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
#include "guilib/GUIWindowManager.h"
#include "GUIUserMessages.h"
#include "InfoLoader.h"
#include "StdString.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
#include "utils/GlobalsHandling.h"
#include <map>
#include "gtest/gtest.h"
-TEST(TestXMLUtils, HasUTF8Declaration)
-{
- EXPECT_TRUE(XMLUtils::HasUTF8Declaration(
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
-}
-
TEST(TestXMLUtils, GetHex)
{
CXBMCTinyXML a;
EXPECT_STREQ("some string5", strarray.at(4).c_str());
}
-TEST(TestXMLUtils, GetEncoding)
-{
- CXBMCTinyXML a;
- CStdString ref, val;
-
- a.Parse("<?xml version=\"1.0\" encoding=\"UTF-16\"?>");
- EXPECT_TRUE(XMLUtils::GetEncoding(&a, val));
-
- ref = "UTF-16";
- EXPECT_STREQ(ref.c_str(), val.c_str());
-}
-
TEST(TestXMLUtils, GetPath)
{
CXBMCTinyXML a, b;
#include "video/windows/GUIWindowFullScreen.h"
#ifdef HAS_VIDEO_PLAYBACK
#include "cores/VideoRenderers/RenderManager.h"
+#include "cores/VideoRenderers/OverlayRendererGUI.h"
#endif
#include "Application.h"
#include "utils/LangCodeExpander.h"
}
else if (setting.id == AUDIO_SETTINGS_DIGITAL_ANALOG)
{
- CSettings::Get().SetBool("audiooutput.passthrough", !m_outputmode);
+ CSettings::Get().SetBool("audiooutput.passthrough", m_outputmode);
EnableSettings(AUDIO_SETTINGS_OUTPUT_TO_ALL_SPEAKERS, true);
EnableSettings(AUDIO_SETTINGS_VOLUME, !g_application.m_pPlayer->IsPassthrough());
--- /dev/null
+/*
+ * Copyright (C) 2005-2013 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "system.h"
+#include "GUIUserMessages.h"
+#include "Application.h"
+#include "GUIDialogSubtitles.h"
+#include "addons/AddonManager.h"
+#include "cores/IPlayer.h"
+#include "dialogs/GUIDialogKaiToast.h"
+#include "filesystem/AddonsDirectory.h"
+#include "filesystem/File.h"
+#include "filesystem/PluginDirectory.h"
+#include "filesystem/SpecialProtocol.h"
+#include "guilib/GUIImage.h"
+#include "settings/MediaSettings.h"
+#include "settings/Settings.h"
+#include "settings/VideoSettings.h"
+#include "settings/lib/Setting.h"
+#include "utils/JobManager.h"
+#include "utils/LangCodeExpander.h"
+#include "utils/log.h"
+#include "utils/StringUtils.h"
+#include "utils/URIUtils.h"
+#include "URL.h"
+#include "Util.h"
+
+using namespace ADDON;
+using namespace XFILE;
+
+#define CONTROL_NAMELABEL 100
+#define CONTROL_NAMELOGO 110
+#define CONTROL_SUBLIST 120
+#define CONTROL_SUBSEXIST 130
+#define CONTROL_SUBSTATUS 140
+#define CONTROL_SERVICELIST 150
+
+/*! \brief simple job to retrieve a directory and store a string (language)
+ */
+class CSubtitlesJob: public CJob
+{
+public:
+ CSubtitlesJob(const CURL &url, const std::string &language) : m_url(url), m_language(language)
+ {
+ m_items = new CFileItemList;
+ }
+ virtual ~CSubtitlesJob()
+ {
+ delete m_items;
+ }
+ virtual bool DoWork()
+ {
+ CDirectory::GetDirectory(m_url.Get(), *m_items);
+ return true;
+ }
+ virtual bool operator==(const CJob *job) const
+ {
+ if (strcmp(job->GetType(),GetType()) == 0)
+ {
+ const CSubtitlesJob* rjob = dynamic_cast<const CSubtitlesJob*>(job);
+ if (rjob)
+ {
+ return m_url.Get() == rjob->m_url.Get() &&
+ m_language == rjob->m_language;
+ }
+ }
+ return false;
+ }
+ const CFileItemList *GetItems() const { return m_items; }
+ const CURL &GetURL() const { return m_url; }
+ const std::string &GetLanguage() const { return m_language; }
+private:
+ CURL m_url;
+ CFileItemList *m_items;
+ std::string m_language;
+};
+
+CGUIDialogSubtitles::CGUIDialogSubtitles(void)
+ : CGUIDialog(WINDOW_DIALOG_SUBTITLES, "DialogSubtitles.xml")
+{
+ m_loadType = KEEP_IN_MEMORY;
+ m_subtitles = new CFileItemList;
+ m_serviceItems = new CFileItemList;
+ m_pausedOnRun = false;
+ m_updateSubsList = false;
+}
+
+CGUIDialogSubtitles::~CGUIDialogSubtitles(void)
+{
+ CancelJobs();
+ delete m_subtitles;
+ delete m_serviceItems;
+}
+
+bool CGUIDialogSubtitles::OnMessage(CGUIMessage& message)
+{
+ if (message.GetMessage() == GUI_MSG_CLICKED)
+ {
+ int iControl = message.GetSenderId();
+
+ if (iControl == CONTROL_SUBLIST)
+ {
+ CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_SUBLIST);
+ OnMessage(msg);
+
+ int item = msg.GetParam1();
+ if (item >= 0 && item < m_subtitles->Size())
+ Download(*m_subtitles->Get(item));
+ return true;
+ }
+ else if (iControl == CONTROL_SERVICELIST)
+ {
+ CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_SERVICELIST);
+ OnMessage(msg);
+
+ int item = msg.GetParam1();
+ if (item >= 0 && item < m_serviceItems->Size() &&
+ SetService(m_serviceItems->Get(item)->GetProperty("Addon.ID").asString()))
+ Search();
+
+ return true;
+ }
+ }
+ else if (message.GetMessage() == GUI_MSG_WINDOW_DEINIT)
+ {
+ // Resume the video if the user has requested it
+ if (g_application.m_pPlayer->IsPaused() && m_pausedOnRun)
+ g_application.m_pPlayer->Pause();
+
+ CGUIDialog::OnMessage(message);
+
+ ClearSubtitles();
+ ClearServices();
+ return true;
+ }
+ return CGUIDialog::OnMessage(message);
+}
+
+void CGUIDialogSubtitles::OnInitWindow()
+{
+ // Pause the video if the user has requested it
+ m_pausedOnRun = false;
+ if (CSettings::Get().GetBool("subtitles.pauseonsearch") && !g_application.m_pPlayer->IsPaused())
+ {
+ g_application.m_pPlayer->Pause();
+ m_pausedOnRun = true;
+ }
+
+ FillServices();
+ CGUIWindow::OnInitWindow();
+ Search();
+}
+
+void CGUIDialogSubtitles::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
+{
+ if (m_bInvalidated)
+ {
+ // take copies of our variables to ensure we don't hold the lock for long.
+ std::string status;
+ CFileItemList subs;
+ {
+ CSingleLock lock(m_section);
+ status = m_status;
+ subs.Assign(*m_subtitles);
+ }
+ SET_CONTROL_LABEL(CONTROL_SUBSTATUS, status);
+
+ if (m_updateSubsList)
+ {
+ CGUIMessage message(GUI_MSG_LABEL_BIND, GetID(), CONTROL_SUBLIST, 0, 0, &subs);
+ OnMessage(message);
+ m_updateSubsList = false;
+ }
+
+ if (!m_subtitles->IsEmpty() && !GetFocusedControl())
+ { // set focus to the list
+ CGUIMessage msg(GUI_MSG_SETFOCUS, GetID(), CONTROL_SUBLIST);
+ OnMessage(msg);
+ }
+ }
+ CGUIDialog::Process(currentTime, dirtyregions);
+}
+
+void CGUIDialogSubtitles::FillServices()
+{
+ ClearServices();
+
+ VECADDONS addons;
+ ADDON::CAddonMgr::Get().GetAddons(ADDON_SUBTITLE_MODULE, addons, true);
+
+ if (addons.empty())
+ {
+ UpdateStatus(NO_SERVICES);
+ return;
+ }
+
+ for (VECADDONS::const_iterator addonIt = addons.begin(); addonIt != addons.end(); addonIt++)
+ {
+ CFileItemPtr item(CAddonsDirectory::FileItemFromAddon(*addonIt, "plugin://", false));
+ m_serviceItems->Add(item);
+ }
+
+ // Bind our services to the UI
+ CGUIMessage msg(GUI_MSG_LABEL_BIND, GetID(), CONTROL_SERVICELIST, 0, 0, m_serviceItems);
+ OnMessage(msg);
+
+ // TODO: Default service support will need to check through the items to find the CFileItem in the loop above.
+ SetService(m_serviceItems->Get(0)->GetProperty("Addon.ID").asString());
+}
+
+bool CGUIDialogSubtitles::SetService(const std::string &service)
+{
+ if (service != m_currentService)
+ {
+ m_currentService = service;
+ CLog::Log(LOGDEBUG, "New Service [%s] ", m_currentService.c_str());
+
+ CFileItemPtr currentService = GetService();
+ // highlight this item in the skin
+ for (int i = 0; i < m_serviceItems->Size(); i++)
+ {
+ CFileItemPtr pItem = m_serviceItems->Get(i);
+ pItem->Select(pItem == currentService);
+ }
+
+ SET_CONTROL_LABEL(CONTROL_NAMELABEL, currentService->GetLabel());
+
+ CGUIImage* image = (CGUIImage*)GetControl(CONTROL_NAMELOGO);
+ if (image)
+ image->SetFileName(currentService->GetArt("thumb"));
+
+ if (g_application.m_pPlayer->GetSubtitleCount() == 0)
+ SET_CONTROL_HIDDEN(CONTROL_SUBSEXIST);
+ else
+ SET_CONTROL_VISIBLE(CONTROL_SUBSEXIST);
+
+ return true;
+ }
+ return false;
+}
+
+const CFileItemPtr CGUIDialogSubtitles::GetService() const
+{
+ for (int i = 0; i < m_serviceItems->Size(); i++)
+ {
+ if (m_serviceItems->Get(i)->GetProperty("Addon.ID") == m_currentService)
+ return m_serviceItems->Get(i);
+ }
+ return CFileItemPtr();
+}
+
+void CGUIDialogSubtitles::Search()
+{
+ if (m_currentService.empty())
+ return; // no services available
+
+ UpdateStatus(SEARCHING);
+ ClearSubtitles();
+
+ CURL url("plugin://" + m_currentService + "/");
+ url.SetOption("action", "search");
+
+ const CSetting *setting = CSettings::Get().GetSetting("subtitles.languages");
+ if (setting)
+ url.SetOption("languages", setting->ToString());
+
+ AddJob(new CSubtitlesJob(url, ""));
+}
+
+void CGUIDialogSubtitles::OnJobComplete(unsigned int jobID, bool success, CJob *job)
+{
+ const CURL &url = ((CSubtitlesJob *)job)->GetURL();
+ const CFileItemList *items = ((CSubtitlesJob *)job)->GetItems();
+ const std::string &language = ((CSubtitlesJob *)job)->GetLanguage();
+ if (url.GetOption("action") == "search")
+ OnSearchComplete(items);
+ else
+ OnDownloadComplete(items, language);
+ CJobQueue::OnJobComplete(jobID, success, job);
+}
+
+void CGUIDialogSubtitles::OnSearchComplete(const CFileItemList *items)
+{
+ CSingleLock lock(m_section);
+ m_subtitles->Assign(*items);
+ UpdateStatus(SEARCH_COMPLETE);
+ m_updateSubsList = true;
+ SetInvalid();
+}
+
+void CGUIDialogSubtitles::UpdateStatus(STATUS status)
+{
+ CSingleLock lock(m_section);
+ std::string label;
+ switch (status)
+ {
+ case NO_SERVICES:
+ label = g_localizeStrings.Get(24114);
+ break;
+ case SEARCHING:
+ label = g_localizeStrings.Get(24107);
+ break;
+ case SEARCH_COMPLETE:
+ if (!m_subtitles->IsEmpty())
+ label = StringUtils::Format(g_localizeStrings.Get(24108).c_str(), m_subtitles->Size());
+ else
+ label = g_localizeStrings.Get(24109);
+ break;
+ case DOWNLOADING:
+ label = g_localizeStrings.Get(24110);
+ break;
+ default:
+ break;
+ }
+ if (label != m_status)
+ {
+ m_status = label;
+ SetInvalid();
+ }
+}
+
+void CGUIDialogSubtitles::Download(const CFileItem &subtitle)
+{
+ UpdateStatus(DOWNLOADING);
+
+ // subtitle URL should be of the form plugin://<addonid>/?param=foo¶m=bar
+ // we just append (if not already present) the action=download parameter.
+ CURL url(subtitle.GetAsUrl());
+ if (url.GetOption("action").empty())
+ url.SetOption("action", "download");
+
+ AddJob(new CSubtitlesJob(url, subtitle.GetLabel()));
+}
+
+void CGUIDialogSubtitles::OnDownloadComplete(const CFileItemList *items, const std::string &language)
+{
+ if (items->IsEmpty())
+ {
+ CFileItemPtr service = GetService();
+ if (service)
+ CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Error, service->GetLabel(), g_localizeStrings.Get(24113));
+ UpdateStatus(SEARCH_COMPLETE);
+ return;
+ }
+
+ CStdString strFileName;
+ CStdString strDestPath;
+ if (g_application.CurrentFileItem().IsStack())
+ {
+ for (int i = 0; i < items->Size(); i++)
+ {
+// check for all stack items and match to given subs, item [0] == CD1, item [1] == CD2
+// CLog::Log(LOGDEBUG, "Stack Subs [%s} Found", vecItems[i]->GetLabel().c_str());
+ }
+ }
+ else if (StringUtils::StartsWith(g_application.CurrentFile(), "http://"))
+ {
+ strFileName = "TemporarySubs";
+ strDestPath = "special://temp/";
+ }
+ else
+ {
+ strFileName = URIUtils::GetFileName(g_application.CurrentFile());
+ if (CSettings::Get().GetBool("subtitles.savetomoviefolder"))
+ {
+ strDestPath = URIUtils::GetDirectory(g_application.CurrentFile());
+ if (!CUtil::SupportsWriteFileOperations(strDestPath))
+ strDestPath.clear();
+ }
+ if (strDestPath.empty())
+ {
+ if (CSpecialProtocol::TranslatePath("special://subtitles").empty())
+ strDestPath = "special://temp";
+ else
+ strDestPath = "special://subtitles";
+ }
+ }
+ // Extract the language and appropriate extension
+ CStdString strSubLang;
+ g_LangCodeExpander.ConvertToTwoCharCode(strSubLang, language);
+ CStdString strUrl = items->Get(0)->GetPath();
+ CStdString strSubExt = URIUtils::GetExtension(strUrl);
+
+ // construct subtitle path
+ URIUtils::RemoveExtension(strFileName);
+ CStdString strSubName;
+ strSubName.Format("%s.%s%s", strFileName.c_str(), strSubLang.c_str(), strSubExt.c_str());
+ CStdString strSubPath = URIUtils::AddFileToFolder(strDestPath, strSubName);
+
+ // and copy the file across
+ CFile::Cache(strUrl, strSubPath);
+ SetSubtitles(strSubPath);
+ // Close the window
+ Close();
+}
+
+void CGUIDialogSubtitles::ClearSubtitles()
+{
+ CGUIMessage msg(GUI_MSG_LABEL_RESET, GetID(), CONTROL_SUBLIST);
+ OnMessage(msg);
+ CSingleLock lock(m_section);
+ m_subtitles->Clear();
+}
+
+void CGUIDialogSubtitles::ClearServices()
+{
+ CGUIMessage msg(GUI_MSG_LABEL_RESET, GetID(), CONTROL_SERVICELIST);
+ OnMessage(msg);
+ m_serviceItems->Clear();
+ m_currentService.clear();
+}
+
+void CGUIDialogSubtitles::SetSubtitles(const std::string &subtitle)
+{
+ if (g_application.m_pPlayer)
+ {
+ int nStream = g_application.m_pPlayer->AddSubtitle(subtitle);
+ if(nStream >= 0)
+ {
+ g_application.m_pPlayer->SetSubtitle(nStream);
+ g_application.m_pPlayer->SetSubtitleVisible(true);
+ CMediaSettings::Get().GetCurrentVideoSettings().m_SubtitleDelay = 0.0f;
+ g_application.m_pPlayer->SetSubTitleDelay(0);
+ }
+ }
+}
--- /dev/null
+#pragma once
+
+/*
+ * Copyright (C) 2005-2013 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+#include "guilib/GUIDialog.h"
+#include "threads/CriticalSection.h"
+#include "utils/JobManager.h"
+
+class CFileItem;
+class CFileItemList;
+
+class CGUIDialogSubtitles : public CGUIDialog, CJobQueue
+{
+public:
+ CGUIDialogSubtitles(void);
+ virtual ~CGUIDialogSubtitles(void);
+ virtual bool OnMessage(CGUIMessage& message);
+ virtual void OnInitWindow();
+
+protected:
+ virtual void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions);
+ virtual void OnJobComplete(unsigned int jobID, bool success, CJob *job);
+
+ bool SetService(const std::string &service);
+ const CFileItemPtr GetService() const;
+ void FillServices();
+ void ClearServices();
+ void ClearSubtitles();
+
+ enum STATUS { NO_SERVICES = 0, SEARCHING, SEARCH_COMPLETE, DOWNLOADING };
+ void UpdateStatus(STATUS status);
+
+ void Search();
+ void OnSearchComplete(const CFileItemList *items);
+
+ void Download(const CFileItem &subtitle);
+ void OnDownloadComplete(const CFileItemList *items, const std::string &language);
+
+ void SetSubtitles(const std::string &subtitle);
+
+ CCriticalSection m_section;
+ CFileItemList* m_subtitles;
+ CFileItemList* m_serviceItems;
+ std::string m_currentService;
+ std::string m_status;
+ bool m_pausedOnRun;
+ bool m_updateSubsList; ///< true if we need to update our subs list
+};
SRCS=GUIDialogAudioSubtitleSettings.cpp \
GUIDialogFileStacking.cpp \
GUIDialogFullScreenInfo.cpp \
+ GUIDialogSubtitles.cpp \
GUIDialogTeletext.cpp \
GUIDialogVideoBookmarks.cpp \
GUIDialogVideoInfo.cpp \
static CLinuxResourceCounter m_resourceCounter;
#endif
-static color_t color[8] = { 0xFFFFFF00, 0xFFFFFFFF, 0xFF0099FF, 0xFF00FF00, 0xFFCCFF00, 0xFF00FFFF, 0xFFE5E5E5, 0xFFC0C0C0 };
-
CGUIWindowFullScreen::CGUIWindowFullScreen(void)
: CGUIWindow(WINDOW_FULLSCREEN_VIDEO, "VideoFullScreen.xml")
{
m_bShowViewModeInfo = false;
m_dwShowViewModeTimeout = 0;
m_bShowCurrentTime = false;
- m_subsLayout = NULL;
m_bGroupSelectShow = false;
m_loadType = KEEP_IN_MEMORY;
// audio
m_bShowViewModeInfo = false;
- if (CUtil::IsUsingTTFSubtitles())
- {
- CSingleLock lock (m_fontLock);
-
- CStdString fontPath = URIUtils::AddFileToFolder("special://home/media/Fonts/", CSettings::Get().GetString("subtitles.font"));
- if (!XFILE::CFile::Exists(fontPath))
- fontPath = URIUtils::AddFileToFolder("special://xbmc/media/Fonts/", CSettings::Get().GetString("subtitles.font"));
-
- // We scale based on PAL4x3 - this at least ensures all sizing is constant across resolutions.
- RESOLUTION_INFO pal(720, 576, 0);
- CGUIFont *subFont = g_fontManager.LoadTTF("__subtitle__", fontPath, color[CSettings::Get().GetInt("subtitles.color")], 0, CSettings::Get().GetInt("subtitles.height"), CSettings::Get().GetInt("subtitles.style"), false, 1.0f, 1.0f, &pal, true);
- CGUIFont *borderFont = g_fontManager.LoadTTF("__subtitleborder__", fontPath, 0xFF000000, 0, CSettings::Get().GetInt("subtitles.height"), CSettings::Get().GetInt("subtitles.style"), true, 1.0f, 1.0f, &pal, true);
- if (!subFont || !borderFont)
- CLog::Log(LOGERROR, "CGUIWindowFullScreen::OnMessage(WINDOW_INIT) - Unable to load subtitle font");
- else
- m_subsLayout = new CGUITextLayout(subFont, true, 0, borderFont);
- }
- else
- m_subsLayout = NULL;
-
return true;
}
case GUI_MSG_WINDOW_DEINIT:
// make sure renderer is uptospeed
g_renderManager.Update();
#endif
-
- CSingleLock lockFont(m_fontLock);
- if (m_subsLayout)
- {
- g_fontManager.Unload("__subtitle__");
- g_fontManager.Unload("__subtitleborder__");
- delete m_subsLayout;
- m_subsLayout = NULL;
- }
-
return true;
}
case GUI_MSG_CLICKED:
void CGUIWindowFullScreen::Render()
{
- if (g_application.m_pPlayer->HasPlayer())
- RenderTTFSubtitles();
CGUIWindow::Render();
}
-void CGUIWindowFullScreen::RenderTTFSubtitles()
-{
- if ((g_application.GetCurrentPlayer() == EPC_MPLAYER ||
-#if defined(HAS_OMXPLAYER)
- g_application.GetCurrentPlayer() == EPC_OMXPLAYER ||
-#endif
- g_application.GetCurrentPlayer() == EPC_DVDPLAYER) &&
- CUtil::IsUsingTTFSubtitles() && (g_application.m_pPlayer->GetSubtitleVisible()))
- {
- CSingleLock lock (m_fontLock);
-
- if(!m_subsLayout)
- return;
-
- CStdString subtitleText = "How now brown cow";
- if (g_application.m_pPlayer->GetCurrentSubtitle(subtitleText))
- {
- // Remove HTML-like tags from the subtitles until
- subtitleText.Replace("\\r", "");
- subtitleText.Replace("\r", "");
- subtitleText.Replace("\\n", "[CR]");
- subtitleText.Replace("\n", "[CR]");
- subtitleText.Replace("<br>", "[CR]");
- subtitleText.Replace("\\N", "[CR]");
- subtitleText.Replace("<i>", "[I]");
- subtitleText.Replace("</i>", "[/I]");
- subtitleText.Replace("<b>", "[B]");
- subtitleText.Replace("</b>", "[/B]");
- subtitleText.Replace("<u>", "");
- subtitleText.Replace("<p>", "");
- subtitleText.Replace("<P>", "");
- subtitleText.Replace(" ", "");
- subtitleText.Replace("</u>", "");
- subtitleText.Replace("</i", "[/I]"); // handle tags which aren't closed properly (happens).
- subtitleText.Replace("</b", "[/B]");
- subtitleText.Replace("</u", "");
-
- RESOLUTION_INFO res = g_graphicsContext.GetResInfo();
- g_graphicsContext.SetRenderingResolution(res, false);
-
- float maxWidth = (float) res.Overscan.right - res.Overscan.left;
- m_subsLayout->Update(subtitleText, maxWidth * 0.9f, false, true); // true to force LTR reading order (most Hebrew subs are this format)
-
- int subalign = CSettings::Get().GetInt("subtitles.align");
- float textWidth, textHeight;
- m_subsLayout->GetTextExtent(textWidth, textHeight);
- float x = maxWidth * 0.5f + res.Overscan.left;
- float y = (float) res.iSubtitles;
-
- if (subalign == SUBTITLE_ALIGN_MANUAL)
- y = (float) res.iSubtitles - textHeight;
- else
- {
- SPlayerVideoStreamInfo info;
- g_application.m_pPlayer->GetVideoStreamInfo(info);
-
- if ((subalign == SUBTITLE_ALIGN_TOP_INSIDE) || (subalign == SUBTITLE_ALIGN_TOP_OUTSIDE))
- y = info.DestRect.y1;
- else
- y = info.DestRect.y2;
-
- // use the manual distance to the screenbottom as an offset to the automatic location
- if ((subalign == SUBTITLE_ALIGN_BOTTOM_INSIDE) || (subalign == SUBTITLE_ALIGN_TOP_OUTSIDE))
- y -= textHeight + g_graphicsContext.GetHeight() - res.iSubtitles;
- else
- y += g_graphicsContext.GetHeight() - res.iSubtitles;
-
- y = std::max(y, (float) res.Overscan.top);
- y = std::min(y, res.Overscan.bottom - textHeight);
- }
-
- m_subsLayout->RenderOutline(x, y, 0, 0xFF000000, XBFONT_CENTER_X, maxWidth);
-
- // reset rendering resolution
- g_graphicsContext.SetRenderingResolution(m_coordsRes, m_needsScaling);
- }
- }
-}
-
void CGUIWindowFullScreen::ChangetheTimeCode(int remote)
{
if (remote >= REMOTE_0 && remote <= REMOTE_9)
#include "guilib/GUIWindow.h"
#include "threads/CriticalSection.h"
-enum SubtitleAlign
-{
- SUBTITLE_ALIGN_MANUAL = 0,
- SUBTITLE_ALIGN_BOTTOM_INSIDE,
- SUBTITLE_ALIGN_BOTTOM_OUTSIDE,
- SUBTITLE_ALIGN_TOP_INSIDE,
- SUBTITLE_ALIGN_TOP_OUTSIDE
-};
-
-class CGUITextLayout; // forward
-
class CGUIWindowFullScreen : public CGUIWindow
{
public:
virtual EVENT_RESULT OnMouseEvent(const CPoint &point, const CMouseEvent &event);
private:
- void RenderTTFSubtitles();
void SeekChapter(int iChapter);
void FillInTVGroups();
void ToggleOSD();
unsigned int m_timeCodeTimeout;
int m_timeCodeStamp[6];
int m_timeCodePosition;
-
- CCriticalSection m_fontLock;
- CGUITextLayout* m_subsLayout;
};
#include "ViewState.h"
#include "guilib/GraphicContext.h"
-#include "settings/ISubSettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/ISubSettings.h"
+#include "settings/lib/Setting.h"
#include "threads/CriticalSection.h"
class TiXmlNode;
<RootNamespace>visDirectxSpectrum</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">false</LinkIncremental>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">$(DXSDK_DIR)Lib\x86;$(LibraryPath)</LibraryPath>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">Spectrum_win32dx</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;DIRECTX_SPEKTRUM_EXPORTS;_WIN32PC;TARGET_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <PreprocessorDefinitions>DIRECTX_SPEKTRUM_EXPORTS;_WIN32PC;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>d3dx9.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)Spectrum_win32dx.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)Spectrum_win32dx.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\addons\visualization.dxspectrum\$(TargetFileName)"</Command>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">
<ClCompile>
- <Optimization>Full</Optimization>
<AdditionalIncludeDirectories>
</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;DIRECTX_SPEKTRUM_EXPORTS;_WIN32PC;_USRDLL;TARGET_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>DIRECTX_SPEKTRUM_EXPORTS;_WIN32PC;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>d3dx9.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)Spectrum_win32dx.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)Spectrum_win32dx.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\addons\visualization.dxspectrum\$(TargetFileName)"</Command>
<RootNamespace>visMilkdrop</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(DXSDK_DIR)Lib\x86;$(LibraryPath)</LibraryPath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(DXSDK_DIR)Include;$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>TARGET_WINDOWS;WIN32;_DEBUG;_WINDOWS;_USRDLL;PLUGIN_EXPORTS;HAS_DX;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <ExceptionHandling>Sync</ExceptionHandling>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_USRDLL;PLUGIN_EXPORTS;HAS_DX;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>D3dx9.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)Plugin.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)Plugin.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\addons\visualization.milkdrop\$(TargetFileName)"</Command>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>TARGET_WINDOWS;WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_EXPORTS;HAS_DX;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PreprocessorDefinitions>_USRDLL;PLUGIN_EXPORTS;HAS_DX;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>D3dx9.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetName).pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)Plugin.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\addons\visualization.milkdrop\$(TargetFileName)"</Command>
<RootNamespace>visWaveform</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
+ <Import Project="$(SolutionDir)\XBMC.core-defaults.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\project\VS2010Express\XBMC for Windows.props" />
+ <Import Project="$(SolutionDir)\XBMC.defaults.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">$(SolutionDir)libs\$(TargetName)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">$(SolutionDir)objs\$(TargetName)\$(Configuration)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">false</LinkIncremental>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">.vis</TargetExt>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">.vis</TargetExt>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">.vis</TargetExt>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug (OpenGL)|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;HAS_SDL_OPENGL;HAS_SDL;WAVEFORM_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PreprocessorDefinitions>HAS_SDL_OPENGL;HAS_SDL;WAVEFORM_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)Waveform.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)Waveform.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\addons\visualization.waveform\$(TargetFileName)"</Command>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release (OpenGL)|Win32'">
<ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;HAS_SDL_OPENGL;HAS_SDL;_USRDLL;WAVEFORM_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>HAS_SDL_OPENGL;HAS_SDL;_USRDLL;WAVEFORM_EXPORTS;_WIN32PC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)Waveform.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\addons\visualization.waveform\$(TargetFileName)"</Command>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug (DirectX)|Win32'">
<ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WAVEFORM_EXPORTS;_WIN32PC;_CRT_NONSTDC_NO_DEPRECATE;TARGET_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>WAVEFORM_EXPORTS;_WIN32PC;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>
</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)Waveform.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)Waveform.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\addons\visualization.waveform\$(TargetFileName)"</Command>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release (DirectX)|Win32'">
<ClCompile>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WAVEFORM_EXPORTS;_WIN32PC;_CRT_NONSTDC_NO_DEPRECATE;TARGET_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PreprocessorDefinitions>_USRDLL;WAVEFORM_EXPORTS;_WIN32PC;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<AdditionalDependencies>
</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)Waveform.lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetPath)" "$(SolutionDir)..\..\addons\visualization.waveform\$(TargetFileName)"</Command>
#include "WinSystem.h"
#include "guilib/GraphicContext.h"
#include "settings/DisplaySettings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "settings/Settings.h"
using namespace std;
#include "WinSystemX11.h"
#include "settings/DisplaySettings.h"
#include "settings/Settings.h"
-#include "settings/Setting.h"
+#include "settings/lib/Setting.h"
#include "guilib/GraphicContext.h"
#include "guilib/Texture.h"
#include "guilib/DispResource.h"
#include "windowing/WinSystem.h"
#include "utils/Stopwatch.h"
#include "threads/CriticalSection.h"
-#include "settings/ISettingCallback.h"
+#include "settings/lib/ISettingCallback.h"
class IDispResource;
void CEGLNativeTypeAmlogic::Initialize()
{
- aml_cpufreq_limit(true);
+ aml_permissions();
+ aml_cpufreq_min(true);
+ aml_cpufreq_max(true);
return;
}
void CEGLNativeTypeAmlogic::Destroy()
{
- aml_cpufreq_limit(false);
+ aml_cpufreq_min(false);
+ aml_cpufreq_max(false);
return;
}
* <http://www.gnu.org/licenses/>.
*
*/
+
#include "system.h"
#include <EGL/egl.h>
#include "EGLNativeTypeAndroid.h"
#include "utils/log.h"
#include "guilib/gui3d.h"
#if defined(TARGET_ANDROID)
-#include "android/activity/XBMCApp.h"
+ #include "android/activity/XBMCApp.h"
+ #if defined(HAS_AMLPLAYER) || defined(HAS_LIBAMCODEC)
+ #include "utils/AMLUtils.h"
+ #endif
#endif
+
CEGLNativeTypeAndroid::CEGLNativeTypeAndroid()
{
}
void CEGLNativeTypeAndroid::Initialize()
{
+#if defined(TARGET_ANDROID) && (defined(HAS_AMLPLAYER) || defined(HAS_LIBAMCODEC))
+ aml_permissions();
+ aml_cpufreq_min(true);
+ aml_cpufreq_max(true);
+#endif
+
return;
}
void CEGLNativeTypeAndroid::Destroy()
{
+#if defined(TARGET_ANDROID) && (defined(HAS_AMLPLAYER) || defined(HAS_LIBAMCODEC))
+ aml_cpufreq_min(false);
+ aml_cpufreq_max(false);
+#endif
+
return;
}