Skip to content
This repository has been archived by the owner on Sep 30, 2018. It is now read-only.

Commit

Permalink
libxbmc: create an entrypoint so that xbmc and other apps can run the…
Browse files Browse the repository at this point in the history
… same way
  • Loading branch information
theuni committed Jun 7, 2012
1 parent f9f942c commit 4f4c4ed
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 66 deletions.
4 changes: 4 additions & 0 deletions xbmc/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
86 changes: 86 additions & 0 deletions xbmc/main.cpp
Original file line number Diff line number Diff line change
@@ -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);
}
70 changes: 4 additions & 66 deletions xbmc/xbmc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
23 changes: 23 additions & 0 deletions xbmc/xbmc.h
Original file line number Diff line number Diff line change
@@ -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);

0 comments on commit 4f4c4ed

Please sign in to comment.