Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

libxbmc: create an entrypoint so that xbmc and other apps can run the…

… same way
  • Loading branch information...
commit 4f4c4ed199aaf90126386628fd2060487b62d32c 1 parent f9f942c
theuni authored
Showing with 117 additions and 66 deletions.
  1. +4 −0 xbmc/Makefile.in
  2. +86 −0 xbmc/main.cpp
  3. +4 −66 xbmc/xbmc.cpp
  4. +23 −0 xbmc/xbmc.h
View
4 xbmc/Makefile.in
@@ -37,6 +37,10 @@ SRCS=Application.cpp \
LIB=xbmc.a
+ifneq (@USE_LIBXBMC@,1)
+SRCS += main.cpp
+endif
+
DISTCLEAN_FILES=DllPaths_generated.h
include @abs_top_srcdir@/Makefile.include
View
86 xbmc/main.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2005-2008 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, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#include "system.h"
+#include "settings/AppParamParser.h"
+#include "settings/AdvancedSettings.h"
+#include "FileItem.h"
+#include "Application.h"
+#include "PlayListPlayer.h"
+#include "utils/log.h"
+#include "xbmc.h"
+#ifdef _LINUX
+#include <sys/resource.h>
+#include <signal.h>
+#endif
+#if defined(TARGET_DARWIN_OSX)
+ #include "Util.h"
+ // SDL redefines main as SDL_main
+ #ifdef HAS_SDL
+ #include <SDL/SDL.h>
+ #endif
+#endif
+#ifdef HAS_LIRC
+#include "input/linux/LIRC.h"
+#endif
+#include "XbmcContext.h"
+
+int main(int argc, char* argv[])
+{
+ // set up some xbmc specific relationships
+ XBMC::Context context;
+
+ bool renderGUI = true;
+ //this can't be set from CAdvancedSettings::Initialize() because it will overwrite
+ //the loglevel set with the --debug flag
+#ifdef _DEBUG
+ g_advancedSettings.m_logLevel = LOG_LEVEL_DEBUG;
+ g_advancedSettings.m_logLevelHint = LOG_LEVEL_DEBUG;
+#else
+ g_advancedSettings.m_logLevel = LOG_LEVEL_NORMAL;
+ g_advancedSettings.m_logLevelHint = LOG_LEVEL_NORMAL;
+#endif
+ CLog::SetLogLevel(g_advancedSettings.m_logLevel);
+
+#ifdef _LINUX
+#if defined(DEBUG)
+ struct rlimit rlim;
+ rlim.rlim_cur = rlim.rlim_max = RLIM_INFINITY;
+ if (setrlimit(RLIMIT_CORE, &rlim) == -1)
+ CLog::Log(LOGDEBUG, "Failed to set core size limit (%s)", strerror(errno));
+#endif
+ // Prevent child processes from becoming zombies on exit if not waited upon. See also Util::Command
+ struct sigaction sa;
+ memset(&sa, 0, sizeof(sa));
+
+ sa.sa_flags = SA_NOCLDWAIT;
+ sa.sa_handler = SIG_IGN;
+ sigaction(SIGCHLD, &sa, NULL);
+#endif
+ setlocale(LC_NUMERIC, "C");
+ g_advancedSettings.Initialize();
+
+#ifndef _WIN32
+ CAppParamParser appParamParser;
+ appParamParser.Parse((const char **)argv, argc);
+#endif
+ return XBMC_Run(renderGUI);
+}
View
70 xbmc/xbmc.cpp
@@ -19,77 +19,15 @@
*
*/
-
-// XBMC
-//
-// libraries:
-// - CDRipX : doesnt support section loading yet
-// - xbfilezilla : doesnt support section loading yet
-//
-
-#include "system.h"
-#include "settings/AppParamParser.h"
-#include "settings/AdvancedSettings.h"
-#include "FileItem.h"
#include "Application.h"
-#include "PlayListPlayer.h"
-#include "utils/log.h"
-#ifdef _LINUX
-#include <sys/resource.h>
-#include <signal.h>
-#endif
-#if defined(TARGET_DARWIN_OSX)
- #include "Util.h"
- // SDL redefines main as SDL_main
- #ifdef HAS_SDL
- #include <SDL/SDL.h>
- #endif
-#endif
-#ifdef HAS_LIRC
-#include "input/linux/LIRC.h"
-#endif
-#include "XbmcContext.h"
-
-int main(int argc, char* argv[])
+#include "settings/AdvancedSettings.h"
+extern "C" int XBMC_Run(bool renderGUI)
{
- // set up some xbmc specific relationships
- XBMC::Context context;
-
int status = -1;
- bool renderGUI = true;
- //this can't be set from CAdvancedSettings::Initialize() because it will overwrite
- //the loglevel set with the --debug flag
-#ifdef _DEBUG
- g_advancedSettings.m_logLevel = LOG_LEVEL_DEBUG;
- g_advancedSettings.m_logLevelHint = LOG_LEVEL_DEBUG;
-#else
- g_advancedSettings.m_logLevel = LOG_LEVEL_NORMAL;
- g_advancedSettings.m_logLevelHint = LOG_LEVEL_NORMAL;
-#endif
- CLog::SetLogLevel(g_advancedSettings.m_logLevel);
-#ifdef _LINUX
-#if defined(DEBUG)
- struct rlimit rlim;
- rlim.rlim_cur = rlim.rlim_max = RLIM_INFINITY;
- if (setrlimit(RLIMIT_CORE, &rlim) == -1)
- CLog::Log(LOGDEBUG, "Failed to set core size limit (%s)", strerror(errno));
-#endif
- // Prevent child processes from becoming zombies on exit if not waited upon. See also Util::Command
- struct sigaction sa;
- memset(&sa, 0, sizeof(sa));
+ if (!g_advancedSettings.Initialized())
+ g_advancedSettings.Initialize();
- sa.sa_flags = SA_NOCLDWAIT;
- sa.sa_handler = SIG_IGN;
- sigaction(SIGCHLD, &sa, NULL);
-#endif
- setlocale(LC_NUMERIC, "C");
- g_advancedSettings.Initialize();
-
-#ifndef _WIN32
- CAppParamParser appParamParser;
- appParamParser.Parse((const char **)argv, argc);
-#endif
if (!g_application.Create())
{
fprintf(stderr, "ERROR: Unable to create application. Exiting\n");
View
23 xbmc/xbmc.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2005-2012 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 of the License, 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#pragma once
+extern "C" int XBMC_Run(bool renderGUI);
+
Please sign in to comment.
Something went wrong with that request. Please try again.