aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2006-03-04 01:32:04 +0000
committerEugene Sandulenko2006-03-04 01:32:04 +0000
commit233c2a42f91b227163e8f96291964116bc64a762 (patch)
tree34d337c65b1cd32d0edcc46934ae2f707d6967e6
parentbd7d05dae60578c68183fa591974f010a578b2b3 (diff)
downloadscummvm-rg350-233c2a42f91b227163e8f96291964116bc64a762.tar.gz
scummvm-rg350-233c2a42f91b227163e8f96291964116bc64a762.tar.bz2
scummvm-rg350-233c2a42f91b227163e8f96291964116bc64a762.zip
WIP of maemo port
svn-id: r21055
-rw-r--r--backends/maemo/Makefile54
-rw-r--r--backends/maemo/hildon.cpp134
-rw-r--r--backends/maemo/main.cpp76
-rw-r--r--backends/maemo/portdefs.h75
-rw-r--r--backends/midi/seq.cpp2
-rw-r--r--backends/sdl/sdl.cpp2
-rw-r--r--base/main.cpp2
-rw-r--r--sound/fmopl.cpp4
-rw-r--r--sound/mididrv.cpp4
9 files changed, 346 insertions, 7 deletions
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 <hildon-widgets/hildon-app.h>
+#include <gtk/gtk.h>
+#include <libosso.h>
+
+#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 <common/stdafx.h>
+#include <common/scummsys.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/Xsp.h>
+
+#include <SDL/SDL.h>
+#include <SDL/SDL_syswm.h>
+
+#include <hildon-widgets/hildon-app.h>
+#include <gtk/gtk.h>
+#include <libosso.h>
+
+#include <sys/time.h>
+#include <sys/resource.h>
+
+#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 <stdio.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <ctype.h>
+#include <time.h>
+#include <math.h>
+
+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)