From 233c2a42f91b227163e8f96291964116bc64a762 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 4 Mar 2006 01:32:04 +0000 Subject: WIP of maemo port svn-id: r21055 --- backends/maemo/Makefile | 54 +++++++++++++++++++ backends/maemo/hildon.cpp | 134 ++++++++++++++++++++++++++++++++++++++++++++++ backends/maemo/main.cpp | 76 ++++++++++++++++++++++++++ backends/maemo/portdefs.h | 75 ++++++++++++++++++++++++++ backends/midi/seq.cpp | 2 +- backends/sdl/sdl.cpp | 2 +- base/main.cpp | 2 +- sound/fmopl.cpp | 4 +- sound/mididrv.cpp | 4 +- 9 files changed, 346 insertions(+), 7 deletions(-) create mode 100644 backends/maemo/Makefile create mode 100644 backends/maemo/hildon.cpp create mode 100644 backends/maemo/main.cpp create mode 100644 backends/maemo/portdefs.h diff --git a/backends/maemo/Makefile b/backends/maemo/Makefile new file mode 100644 index 0000000000..f1cfa09f7f --- /dev/null +++ b/backends/maemo/Makefile @@ -0,0 +1,54 @@ +# ScummVM Maemo MakeFile +# $Header: /cvsroot/scummvm/scummvm/backends/psp/Makefile,v 1.6 2005/11/20 17:36:02 joostp Exp $ + +#control build +DISABLE_HQ_SCALERS = true + +srcdir = ../.. +VPATH = $(srcdir) + +CXX := g++ +EXECUTABLE := scummvm + +INCDIR = ../../ + +CXXFLAGS := -g -ansi -W -Wno-unused-parameter +CXXFLAGS += `pkg-config --cflags gconf-2.0 hildon-libs gtk+-2.0 libosso gdk-2.0` +CXXFLAGS += $(addprefix -I,$(INCDIR)) -I. -Wall $(CXXFLAGS) +CXXFLAGS += -O -Wuninitialized +CXXFLAGS += -Wno-long-long -Wno-multichar -Wno-unknown-pragmas +# Even more warnings... +CXXFLAGS += -pedantic -Wpointer-arith -Wcast-qual -Wconversion +CXXFLAGS += -Wshadow -Wimplicit -Wundef -Wnon-virtual-dtor +CXXFLAGS += -Wno-reorder -Wwrite-strings -fcheck-new + +LIBS += -lz -L/usr/lib -lSDL -lpthread -lXsp -losso +LIBS += `pkg-config --libs gconf-2.0 hildon-libs gtk+-2.0 libosso gdk-2.0` +INCLUDES += -I/usr/include/SDL -D_REENTRANT -I/usr/X11R6/include +OBJS += +DEFINES += -DUNIX -DNONSTANDARD_PORT -D__MAEMO__ +LDFLAGS += + +RANLIB := ranlib +INSTALL := install +AR := ar cru +MKDIR := mkdir -p +ECHO := printf +CAT := cat +RM := rm -f +RM_REC := rm -f -r +CP := cp + +OBJS := main.o + +MODULE_DIRS += . + + +BACKEND := sdl +MODULES += backends/sdl base +MODULE_DIRS += . + +HAVE_GCC3 = 1 + +include $(srcdir)/Makefile.common + diff --git a/backends/maemo/hildon.cpp b/backends/maemo/hildon.cpp new file mode 100644 index 0000000000..1c9bd9162a --- /dev/null +++ b/backends/maemo/hildon.cpp @@ -0,0 +1,134 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2006 The ScummVM project + * + * 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. + * + * $URL$ + * $Id$ + * + */ + +#include +#include +#include + +#define OSSO_APP_NAME "scummvm" +#define OSSO_APP_VERSION "0.9.0CVS" +#define OSSO_APP_SERVICE "org.scummvm."OSSO_APP_NAME +#define OSSO_APP_OBJECT "/org/scummvm/"OSSO_APP_NAME +#define OSSO_APP_IFACE "org.scummvm."OSSO_APP_NAME + +// Application UI data struct +typedef struct _AppData AppData; +struct _AppData { + HildonApp *app; + HildonAppView *appview; + osso_context_t *osso_context; +}; + +// Callback for exit D-BUS event +void exit_event_handler(gboolean die_now, gpointer data) { + AppData *appdata; + appdata = (AppData *)data; + g_print("exit_event_handler called\n"); + /* Do whatever application needs to do before exiting */ + gtk_infoprint(GTK_WINDOW(appdata->app), "Exiting..."); +} + +// Callback for normal D-BUS messages +gint dbus_req_handler(const gchar *interface, const gchar *method, + GArray *arguments, gpointer data, + osso_rpc_t *retval) { + AppData *appdata; + appdata = (AppData *)data; + osso_system_note_infoprint(appdata->osso_context, method, retval); + return OSSO_OK; +} + + +// Main application +int main(int argc, char *argv[]) { + // Create needed variables + HildonApp *app; + HildonAppView *appview; + osso_context_t *osso_context; + osso_return_t result; + GtkWidget *main_vbox; + GtkWidget *label; + + // Initialize the GTK. + gtk_init(&argc, &argv); + + // Initialize maemo application + osso_context = osso_initialize(OSSO_APP_NAME, OSSO_APP_VERSION, TRUE, NULL); + + // Check that initialization was ok + if (osso_context == NULL) { + return OSSO_ERROR; + } + + // Create the hildon application and setup the title + app = HILDON_APP(hildon_app_new()); + hildon_app_set_title(app, "ScummVM"); + hildon_app_set_two_part_title(app, TRUE); + + // Create HildonAppView and set it to HildonApp + appview = HILDON_APPVIEW(hildon_appview_new("AppView Title")); + hildon_app_set_appview(app, appview); + + // Create AppData + AppData *appdata; + appdata = g_new0(AppData, 1); + appdata->app = app; + appdata->appview = appview; + appdata->osso_context = osso_context; + + // Add vbox to appview + main_vbox = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(appview), main_vbox); + + // Add button to vbox + label = gtk_label_new("Waiting for DBUS message..."); + gtk_box_pack_start(GTK_BOX(main_vbox), label, FALSE, TRUE, 0); + + // Add handler for hello D-BUS messages + result = osso_rpc_set_cb_f(appdata->osso_context, + OSSO_APP_SERVICE, + OSSO_APP_OBJECT, + OSSO_APP_IFACE, + dbus_req_handler, appdata); + if (result != OSSO_OK) { + g_print("Error setting D-BUS callback (%d)\n", result); + return OSSO_ERROR; + } + + // Add handler for Exit D-BUS messages + result = osso_application_set_exit_cb(appdata->osso_context, + exit_event_handler, + (gpointer) appdata); + if (result != OSSO_OK) { + g_print("Error setting exit callback (%d)\n", result); + return OSSO_ERROR; + } + + // Begin the main application + gtk_widget_show_all(GTK_WIDGET(app)); + gtk_main(); + + // Deinitialize OSSO + osso_deinitialize(osso_context); + + return 0; +} diff --git a/backends/maemo/main.cpp b/backends/maemo/main.cpp new file mode 100644 index 0000000000..7ef2bfd2f1 --- /dev/null +++ b/backends/maemo/main.cpp @@ -0,0 +1,76 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2006 The ScummVM project + * + * 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. + * + * $URL$ + * $Id$ + * + */ + +#define REAL_MAIN +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#define OSSO_APP_NAME "scummvm" +#define OSSO_APP_VERSION "0.9.0CVS" + +void set_doubling(unsigned char enable) { + return; + + SDL_SysWMinfo wminfo; + SDL_VERSION(&wminfo.version); + SDL_GetWMInfo(&wminfo); + XSPSetPixelDoubling(wminfo.info.x11.display, 0, enable); +} + +extern "C" int scummvm_main(int argc, char *argv[]); + +int main(int argc, char *argv[]) { + osso_context_t *osso_context; + + // Initialize maemo application + //osso_context = osso_initialize(OSSO_APP_NAME, OSSO_APP_VERSION, TRUE, NULL); + + // Check that initialization was ok + //if (osso_context == NULL) { + // return OSSO_ERROR; + //} + + // Maemo task navigator priority inheritance fix + setpriority(PRIO_PROCESS, 0, 0); + + set_doubling(0); + scummvm_main(argc, argv); + + /* Deinitialize OSSO */ + //osso_deinitialize(osso_context); + + set_doubling(0); + + return 0; +} diff --git a/backends/maemo/portdefs.h b/backends/maemo/portdefs.h new file mode 100644 index 0000000000..82894331b3 --- /dev/null +++ b/backends/maemo/portdefs.h @@ -0,0 +1,75 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2006 The ScummVM project + * + * 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. + * + * $URL$ + * $Id$ + * + */ + +#ifndef PORTDEFS_H +#define PORTDEFS_H + +#define SCUMM_LITTLE_ENDIAN +#define SCUMM_NEED_ALIGNMENT + +#undef HAVE_X86 + +#undef LINUPY + +/* Data types */ +typedef unsigned char byte; +typedef unsigned int uint; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint32; +typedef signed char int8; +typedef signed short int16; +typedef signed int int32; + +/* Libs */ +#undef USE_VORBIS +#undef USE_TREMOR +#undef USE_FLAC +#undef USE_MAD +#define USE_ZLIB +#undef USE_MPEG2 +#undef USE_MT32EMU + +/* Whether we should use i386 assembly routines */ +#undef USE_NASM + +#undef main + +#ifndef REAL_MAIN +#define main scummvm_main +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void set_doubling(unsigned char enable); + +#endif /* PORTDEFS_H */ + + diff --git a/backends/midi/seq.cpp b/backends/midi/seq.cpp index 1d77646392..8052344879 100644 --- a/backends/midi/seq.cpp +++ b/backends/midi/seq.cpp @@ -26,7 +26,7 @@ * both the QuickTime support and (vkeybd http://www.alsa-project.org/~iwai/alsa.html) */ -#if defined(UNIX) && !defined(__BEOS__) +#if defined(UNIX) && !defined(__BEOS__) && !defined(__MAEMO__) #include "common/stdafx.h" #include "sound/mpu401.h" diff --git a/backends/sdl/sdl.cpp b/backends/sdl/sdl.cpp index 98ffc063e7..74dbb969e9 100644 --- a/backends/sdl/sdl.cpp +++ b/backends/sdl/sdl.cpp @@ -78,7 +78,7 @@ void OSystem_SDL::initBackend() { _scaleFactor = 1; _scalerProc = Normal1x; -#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) +#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && !defined(__MAEMO__) _fullscreen = ConfMan.getBool("fullscreen"); #else _fullscreen = true; diff --git a/base/main.cpp b/base/main.cpp index e6e02d0a25..50a4c9f4e5 100644 --- a/base/main.cpp +++ b/base/main.cpp @@ -331,7 +331,7 @@ static int runGame(GameDetector &detector, OSystem &system, const Common::String #ifdef _WIN32_WCE extern "C" int scummvm_main(GameDetector &detector, int argc, char *argv[]) { -#elif defined(__PLAYSTATION2__) || defined(__PSP__) || defined(__GP32__) +#elif defined(__PLAYSTATION2__) || defined(__PSP__) || defined(__GP32__) || defined(__MAEMO__) extern "C" int scummvm_main(int argc, char *argv[]) { #else extern "C" int main(int argc, char *argv[]) { diff --git a/sound/fmopl.cpp b/sound/fmopl.cpp index e3133b9792..faea609d21 100644 --- a/sound/fmopl.cpp +++ b/sound/fmopl.cpp @@ -35,7 +35,7 @@ #include "common/util.h" -#if defined (_WIN32_WCE) || defined (__SYMBIAN32__) || defined(PALMOS_MODE) || defined(__GP32__) +#if defined (_WIN32_WCE) || defined (__SYMBIAN32__) || defined(PALMOS_MODE) || defined(__GP32__) || defined (__MAEMO__) #include "common/config-manager.h" #endif @@ -1143,7 +1143,7 @@ FM_OPL *makeAdlibOPL(int rate) { // We need to emulate one YM3812 chip int env_bits = FMOPL_ENV_BITS_HQ; int eg_ent = FMOPL_EG_ENT_HQ; -#if defined (_WIN32_WCE) || defined(__SYMBIAN32__) || defined(PALMOS_MODE) || defined(__GP32__) +#if defined (_WIN32_WCE) || defined(__SYMBIAN32__) || defined(PALMOS_MODE) || defined(__GP32__) || defined(__MAEMO__) if (ConfMan.hasKey("FM_high_quality") && ConfMan.getBool("FM_high_quality")) { env_bits = FMOPL_ENV_BITS_HQ; eg_ent = FMOPL_EG_ENT_HQ; diff --git a/sound/mididrv.cpp b/sound/mididrv.cpp index 4918e969e1..8130ccc0c1 100644 --- a/sound/mididrv.cpp +++ b/sound/mididrv.cpp @@ -45,7 +45,7 @@ static const MidiDriverDescription s_musicDrivers[] = { {"alsa", "ALSA", MD_ALSA, MDT_MIDI}, #endif -#if defined(UNIX) && !defined(__BEOS__) && !defined(MACOSX) +#if defined(UNIX) && !defined(__BEOS__) && !defined(MACOSX) && !defined(__MAEMO__) {"seq", "SEQ", MD_SEQ, MDT_MIDI}, #endif @@ -243,7 +243,7 @@ MidiDriver *MidiDriver::createMidi(int midiDriver) { #if defined(__MORPHOS__) case MD_ETUDE: return MidiDriver_ETUDE_create(); #endif -#if defined(UNIX) && !defined(__BEOS__) && !defined(MACOSX) +#if defined(UNIX) && !defined(__BEOS__) && !defined(MACOSX) && !defined(__MAEMO__) case MD_SEQ: return MidiDriver_SEQ_create(); #endif #if defined(MACOSX) -- cgit v1.2.3