Index: language/English (US)/strings.po =================================================================== --- language/English (US)/strings.po (revision 33005) +++ language/English (US)/strings.po (working copy) @@ -8272,3 +8272,7 @@ msgctxt "#34005" msgid "Flac" msgstr "Flac" + +msgctxt "#34010" +msgid "Power off on exit" +msgstr "Power off on exit" Index: language/English/strings.po =================================================================== --- language/English/strings.po (revision 33005) +++ language/English/strings.po (working copy) @@ -8688,3 +8688,7 @@ msgctxt "#34005" msgid "Flac" msgstr "" + +msgctxt "#34010" +msgid "Power off on exit" +msgstr "" \ No newline at end of file Index: language/French/strings.po =================================================================== --- language/French/strings.po (revision 33005) +++ language/French/strings.po (working copy) @@ -8280,3 +8280,7 @@ msgctxt "#34005" msgid "Flac" msgstr "Flac" + +msgctxt "#34010" +msgid "Éteindre à la sortie" +msgstr "Éteindre à la sortie" Index: xbmc.vcproj =================================================================== --- xbmc.vcproj (revision 33005) +++ xbmc.vcproj (working copy) @@ -2740,6 +2740,12 @@ RelativePath=".\xbmc\lib\x3lcd\x3lcd.h"> + + + + Stop(); + CLog::Log(LOGNOTICE, "Stop LCD addon."); + g_lcd->Stop(g_guiSettings.GetBool("lcd.poweroffonexit")); delete g_lcd; g_lcd=NULL; } Index: xbmc/lib/libXenium/XeniumLCD.cpp =================================================================== --- xbmc/lib/libXenium/XeniumLCD.cpp (revision 33005) +++ xbmc/lib/libXenium/XeniumLCD.cpp (working copy) @@ -62,9 +62,14 @@ } //************************************************************************************************************* -void CXeniumLCD::Stop() +void CXeniumLCD::Stop(bool TurnOffLCD) { if (g_guiSettings.GetInt("lcd.type") == LCD_TYPE_NONE) return; + if(TurnOffLCD) + { + DisplaySetBacklight(0); + m_xenium.HideDisplay(); + } StopThread(); } @@ -255,9 +260,12 @@ } } } + /* + //This code clears the screen when stopping thread. for (int i=0; i < (int)m_iRows; i++) { DisplayClearChars(0,i,m_iColumns); } m_xenium.HideDisplay(); + */ } Index: xbmc/lib/libXenium/XeniumLCD.h =================================================================== --- xbmc/lib/libXenium/XeniumLCD.h (revision 33005) +++ xbmc/lib/libXenium/XeniumLCD.h (working copy) @@ -11,7 +11,7 @@ CXeniumLCD(); virtual ~CXeniumLCD(void); virtual void Initialize(); - virtual void Stop(); + virtual void Stop(bool TurnOffLCD); virtual void SetBackLight(int iLight); virtual void SetContrast(int iContrast); protected: Index: xbmc/lib/smartXX/smartxxlcd.cpp =================================================================== --- xbmc/lib/smartXX/smartxxlcd.cpp (revision 33005) +++ xbmc/lib/smartXX/smartxxlcd.cpp (working copy) @@ -120,9 +120,14 @@ } //************************************************************************************************************* -void CSmartXXLCD::Stop() +void CSmartXXLCD::Stop(bool TurnOffLCD) { if (g_guiSettings.GetInt("lcd.type") == LCD_TYPE_NONE) return; + if(TurnOffLCD) + { + DisplaySetBacklight(0); + DisplayOut(DISP_CLEAR,CMD); + } StopThread(); } @@ -601,9 +606,12 @@ } } } + /* + //This code clears the screen when stopping thread. for (int i=0; i < (int)m_iRows; i++) { DisplayClearChars(0,i,m_iColumns); } DisplayOut(DISP_CONTROL ,CMD); // Display off + */ } Index: xbmc/lib/smartXX/smartxxLCD.h =================================================================== --- xbmc/lib/smartXX/smartxxLCD.h (revision 33005) +++ xbmc/lib/smartXX/smartxxLCD.h (working copy) @@ -10,7 +10,7 @@ CSmartXXLCD(); virtual ~CSmartXXLCD(void); virtual void Initialize(); - virtual void Stop(); + virtual void Stop(bool TurnOffLCD); virtual void SetBackLight(int iLight); virtual void SetContrast(int iContrast); @@ -18,8 +18,8 @@ virtual void Process(); virtual void SetLine(int iLine, const CStdString& strLine); void DisplayInit(); - void DisplaySetBacklight(unsigned char level) ; - void DisplaySetContrast(unsigned char level) ; + virtual void DisplaySetBacklight(unsigned char level) ; + virtual void DisplaySetContrast(unsigned char level) ; void DisplayProgressBar(unsigned char percent, unsigned char charcnt); void DisplayClearChars(unsigned char startpos , unsigned char line, unsigned char lenght) ; void DisplayWriteString(char *pointer) ; Index: xbmc/lib/x3lcd/x3lcd.cpp =================================================================== --- xbmc/lib/x3lcd/x3lcd.cpp (revision 33005) +++ xbmc/lib/x3lcd/x3lcd.cpp (working copy) @@ -59,10 +59,15 @@ } void CX3LCD::SetContrast(int iContrast) { } //************************************************************************************************************* -void CX3LCD::Stop() +void CX3LCD::Stop(bool TurnOffLCD) { if (g_guiSettings.GetInt("lcd.type") == LCD_TYPE_NONE) return; + if(TurnOffLCD) + { + DisplaySetBacklight(0); + DisplayOut(DISP_CLEAR,CMD); + } StopThread(); } @@ -434,9 +439,12 @@ } } } + /* + //This code clears the screen when stopping thread. for (int i = 0; i < (int)m_iRows; i++) { DisplayClearChars(0, i, m_iColumns); } DisplayOut(DISP_CONTROL, CMD); // Display off + */ } Index: xbmc/lib/x3lcd/x3lcd.h =================================================================== --- xbmc/lib/x3lcd/x3lcd.h (revision 33005) +++ xbmc/lib/x3lcd/x3lcd.h (working copy) @@ -61,7 +61,7 @@ CX3LCD(); virtual ~CX3LCD(void); virtual void Initialize(); - virtual void Stop(); + virtual void Stop(bool TurnOffLCD); virtual void SetBackLight(int iLight); virtual void SetContrast(int iContrast); protected: Index: xbmc/settings/GUISettings.cpp =================================================================== --- xbmc/settings/GUISettings.cpp (revision 33005) +++ xbmc/settings/GUISettings.cpp (working copy) @@ -342,12 +342,13 @@ AddCategory(4, "lcd", 448); AddInt(2, "lcd.type", 4501, LCD_TYPE_NONE, LCD_TYPE_NONE, 1, LCD_TYPE_VFD, SPIN_CONTROL_TEXT); - AddInt(3, "lcd.modchip", 471, MODCHIP_SMARTXX, MODCHIP_SMARTXX, 1, MODCHIP_XECUTER3, SPIN_CONTROL_TEXT); + AddInt(3, "lcd.modchip", 471, MODCHIP_SMARTXX, MODCHIP_SMARTXX, 1, MODCHIP_XBLAST, SPIN_CONTROL_TEXT); AddInt(4, "lcd.backlight", 463, 80, 0, 5, 100, SPIN_CONTROL_INT_PLUS, MASK_PERCENT); AddInt(5, "lcd.contrast", 465, 100, 0, 5, 100, SPIN_CONTROL_INT_PLUS, MASK_PERCENT); AddSeparator(6, "lcd.sep1"); - AddInt(7, "lcd.disableonplayback", 20310, LED_PLAYBACK_OFF, LED_PLAYBACK_OFF, 1, LED_PLAYBACK_VIDEO_MUSIC, SPIN_CONTROL_TEXT); - AddBool(8, "lcd.enableonpaused", 20312, true); + AddBool(7, "lcd.poweroffonexit", 34010, false); + AddInt(8, "lcd.disableonplayback", 20310, LED_PLAYBACK_OFF, LED_PLAYBACK_OFF, 1, LED_PLAYBACK_VIDEO_MUSIC, SPIN_CONTROL_TEXT); + AddBool(9, "lcd.enableonpaused", 20312, true); AddCategory(4, "debug", 14092); AddBool(1, "debug.showloginfo", 20191, false); Index: xbmc/settings/GUISettings.h =================================================================== --- xbmc/settings/GUISettings.h (revision 33005) +++ xbmc/settings/GUISettings.h (working copy) @@ -62,6 +62,7 @@ #define MODCHIP_SMARTXX 0 #define MODCHIP_XENIUM 1 #define MODCHIP_XECUTER3 2 +#define MODCHIP_XBLAST 3 // LED settings #define LED_COLOUR_NO_CHANGE 0 Index: xbmc/settings/GUIWindowSettingsCategory.cpp =================================================================== --- xbmc/settings/GUIWindowSettingsCategory.cpp (revision 33005) +++ xbmc/settings/GUIWindowSettingsCategory.cpp (working copy) @@ -528,6 +528,7 @@ pControl->AddLabel("SmartXX", MODCHIP_SMARTXX); pControl->AddLabel("Xenium", MODCHIP_XENIUM); pControl->AddLabel("Xecuter3", MODCHIP_XECUTER3); + pControl->AddLabel("XBlast", MODCHIP_XBLAST); pControl->SetValue(pSettingInt->GetData()); } else if (strSetting.Equals("harddisk.aamlevel")) @@ -1167,7 +1168,7 @@ CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID()); if (pControl) pControl->SetEnabled(g_guiSettings.GetInt("system.leddisableonplayback") != LED_PLAYBACK_OFF && g_guiSettings.GetInt("system.ledcolour") != LED_COLOUR_OFF && g_guiSettings.GetInt("system.ledcolour") != LED_COLOUR_NO_CHANGE); } - else if (strSetting.Equals("lcd.modchip") || strSetting.Equals("lcd.backlight") || strSetting.Equals("lcd.disableonplayback")) + else if (strSetting.Equals("lcd.modchip") || strSetting.Equals("lcd.backlight") || strSetting.Equals("lcd.disableonplayback") || strSetting.Equals("lcd.poweroffonexit")) { CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID()); if (pControl) pControl->SetEnabled(g_guiSettings.GetInt("lcd.type") != LCD_TYPE_NONE); @@ -1477,7 +1478,7 @@ } else if (strSetting.Equals("lcd.modchip")) { - g_lcd->Stop(); + g_lcd->Stop(true); CLCDFactory factory; delete g_lcd; g_lcd = factory.Create(); @@ -1487,6 +1488,13 @@ { g_lcd->SetContrast(((CSettingInt *)pSettingControl->GetSetting())->GetData()); } + /* + //Not useful right now. Will be later if parameter can be set in advancedsettings xml file. + else if (strSetting.Equals("lcd.poweroffonexit")) + { + g_advancedSettings.m_PowerOffOnExit = ((CSettingBool *)pSettingControl->GetSetting())->GetData(); + } + */ #endif #ifdef HAS_XBOX_HARDWARE else if (strSetting.Equals("system.targettemperature")) Index: xbmc/Util.cpp =================================================================== --- xbmc/Util.cpp (revision 33005) +++ xbmc/Util.cpp (working copy) @@ -1011,7 +1011,7 @@ } ourmemaddr=(PVOID *)(((unsigned int) ourmemaddr) + sizeof(igk_main_toy)); - if (g_guiSettings.GetInt("lcd.mode") > 0 && g_guiSettings.GetInt("lcd.type") == MODCHIP_SMARTXX) + if (g_guiSettings.GetInt("lcd.mode") > 0 && (g_guiSettings.GetInt("lcd.type") == MODCHIP_SMARTXX || g_guiSettings.GetInt("lcd.type") == MODCHIP_XBLAST)) { memcpy(ourmemaddr, lcd_toy_xx, sizeof(lcd_toy_xx)); _asm Index: xbmc/utils/LCD.h =================================================================== --- xbmc/utils/LCD.h (revision 33005) +++ xbmc/utils/LCD.h (working copy) @@ -48,7 +48,7 @@ CUSTOM_CHARSET_MAX }; virtual void Initialize(); - virtual void Stop() = 0; + virtual void Stop(bool TurnOffLCD) = 0; virtual void SetBackLight(int iLight) = 0; virtual void SetContrast(int iContrast) = 0; virtual void SetLine(int iLine, const CStdString& strLine) = 0; Index: xbmc/utils/LCDFactory.cpp =================================================================== --- xbmc/utils/LCDFactory.cpp (revision 33005) +++ xbmc/utils/LCDFactory.cpp (working copy) @@ -3,6 +3,7 @@ #include "lib/smartxx/smartxxLCD.h" #include "lib/libXenium/XeniumLCD.h" #include "lib/x3lcd/x3lcd.h" +#include "lib/xblast/xblastLCD.h" #include "settings/GUISettings.h" ILCD* g_lcd = NULL; @@ -28,6 +29,10 @@ return new CX3LCD(); break; + case MODCHIP_XBLAST: + return new CXBlastLCD(); + break; + } return new CSmartXXLCD(); }