From d9d80bbf6c34fa546fc81299255fb31a5ec1a7ea Mon Sep 17 00:00:00 2001
From: Marc <mhocking@home-workstation.localdomain>
Date: Thu, 7 Jun 2012 17:27:26 +0100
Subject: [PATCH 3/3] Allow XBMC to run headless .i.e. No GUI

---
 xbmc/main.cpp                    |    2 ++
 xbmc/settings/AppParamParser.cpp |    9 +++++++++
 xbmc/settings/AppParamParser.h   |    2 ++
 3 files changed, 13 insertions(+)

diff --git xbmc/main/main.cpp xbmc/main/main.cpp
index 0b0274a..6f9229b 100644
--- xbmc/main/main.cpp
+++ xbmc/main/main.cpp
@@ -82,6 +82,8 @@ int main(int argc, char* argv[])
 #ifndef _WIN32
   CAppParamParser appParamParser;
   appParamParser.Parse((const char **)argv, argc);
+
+  renderGUI = appParamParser.renderGUI();
 #endif
   return XBMC_Run(renderGUI);
 }
diff --git xbmc/settings/AppParamParser.cpp xbmc/settings/AppParamParser.cpp
index 0302105..5a4627c 100644
--- xbmc/settings/AppParamParser.cpp
+++ xbmc/settings/AppParamParser.cpp
@@ -39,6 +39,7 @@
 CAppParamParser::CAppParamParser()
 {
   m_testmode = false;
+  m_renderGUI = true;
 }
 
 void CAppParamParser::Parse(const char* argv[], int nArgs)
@@ -107,6 +108,7 @@ void CAppParamParser::DisplayHelp()
   printf("  --test\t\tEnable test mode. [FILE] required.\n");
   printf("  --settings=<filename>\t\tLoads specified file after advancedsettings.xml replacing any settings specified\n");
   printf("  \t\t\t\tspecified file must exist in special://xbmc/system/\n");
+  printf("  --headless\t\tRun XBMC headless, i.e. No GUI.\n");
   exit(0);
 }
 
@@ -135,6 +137,8 @@ void CAppParamParser::ParseArg(const CStdString &arg)
     g_application.SetEnableLegacyRes(true);
   else if (arg == "--test")
     m_testmode = true;
+  else if (arg == "--headless")
+    m_renderGUI = false;
   else if (arg.substr(0, 11) == "--settings=")
     g_advancedSettings.AddSettingsFile(arg.substr(11));
   else if (arg.length() != 0 && arg[0] != '-')
@@ -147,6 +151,11 @@ void CAppParamParser::ParseArg(const CStdString &arg)
   }
 }
 
+bool CAppParamParser::renderGUI()
+{
+  return(m_renderGUI);
+}
+
 void CAppParamParser::PlayPlaylist()
 {
   if (m_playlist.Size() > 0)
diff --git xbmc/settings/AppParamParser.h xbmc/settings/AppParamParser.h
index fb21081..c201e48 100644
--- xbmc/settings/AppParamParser.h
+++ xbmc/settings/AppParamParser.h
@@ -27,9 +27,11 @@ class CAppParamParser
   public:
     CAppParamParser();
     void Parse(const char* argv[], int nArgs);
+    bool renderGUI();
 
   private:
     bool m_testmode;
+    bool m_renderGUI;
     CFileItemList m_playlist;
     void ParseArg(const CStdString &arg);
     void DisplayHelp();
-- 
1.7.10.2
