From 492c65009cb186024f52ec1970617028c3d09efe Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sat, 24 Jun 2006 12:33:52 +0000 Subject: Started to move 'monolithic' parts of our ports to the new 'background/platform' directory (see also the 'Modular_Backends' page in our Wiki) svn-id: r23293 --- backends/platform/maemo/Makefile | 69 +++++++++++++++++ backends/platform/maemo/hildon.cpp | 134 ++++++++++++++++++++++++++++++++++ backends/platform/maemo/maemo-sdl.cpp | 42 +++++++++++ backends/platform/maemo/maemo-sdl.h | 41 +++++++++++ backends/platform/maemo/main.cpp | 81 ++++++++++++++++++++ backends/platform/maemo/portdefs.h | 69 +++++++++++++++++ 6 files changed, 436 insertions(+) create mode 100644 backends/platform/maemo/Makefile create mode 100644 backends/platform/maemo/hildon.cpp create mode 100644 backends/platform/maemo/maemo-sdl.cpp create mode 100644 backends/platform/maemo/maemo-sdl.h create mode 100644 backends/platform/maemo/main.cpp create mode 100644 backends/platform/maemo/portdefs.h (limited to 'backends/platform/maemo') diff --git a/backends/platform/maemo/Makefile b/backends/platform/maemo/Makefile new file mode 100644 index 0000000000..ca49a35f9c --- /dev/null +++ b/backends/platform/maemo/Makefile @@ -0,0 +1,69 @@ +# ScummVM Maemo MakeFile +# $URL$ +# $Id$ + +#control build +DISABLE_HQ_SCALERS = true + +#DISABLE_SCUMM = 1 +#DISABLE_HE = 1 +DISABLE_SIMON = 1 +DISABLE_SKY = 1 +DISABLE_SWORD1 = 1 +DISABLE_SWORD2 = 1 +DISABLE_QUEEN = 1 +DISABLE_KYRA = 1 +DISABLE_SAGA = 1 +DISABLE_GOB = 1 +DISABLE_LURE = 1 +DISABLE_CINE = 1 +DISABLE_AGI = 1 + +srcdir = ../.. +VPATH = $(srcdir) + +CXX := g++ +EXECUTABLE := scummvm + +INCDIR = ../../ . $(srcdir)/engines/ + +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 maemo-sdl.o + +MODULE_DIRS += . + + +BACKEND := sdl +MODULES += backends/platform/sdl base +MODULE_DIRS += . + +HAVE_GCC3 = 1 + +include $(srcdir)/Makefile.common + diff --git a/backends/platform/maemo/hildon.cpp b/backends/platform/maemo/hildon.cpp new file mode 100644 index 0000000000..1c9bd9162a --- /dev/null +++ b/backends/platform/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/platform/maemo/maemo-sdl.cpp b/backends/platform/maemo/maemo-sdl.cpp new file mode 100644 index 0000000000..dfb6cb7048 --- /dev/null +++ b/backends/platform/maemo/maemo-sdl.cpp @@ -0,0 +1,42 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2001-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 "common/stdafx.h" +#include "backends/maemo/maemo-sdl.h" + + +void OSystem_MAEMO::loadGFXMode() { + if (_fullscreen || effectiveScreenHeight() > 400) { + _overlayWidth = 800; + _overlayHeight = 480; + + _fullscreen = true; + } else { + _overlayWidth = 720; + _overlayHeight = 400; + } + + if (_screenHeight != 200) + _adjustAspectRatio = false; + + OSystem_SDL::loadGFXMode(); +} diff --git a/backends/platform/maemo/maemo-sdl.h b/backends/platform/maemo/maemo-sdl.h new file mode 100644 index 0000000000..e342ead5f9 --- /dev/null +++ b/backends/platform/maemo/maemo-sdl.h @@ -0,0 +1,41 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2001-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 MAEMO_SDL_H +#define MAEMO_SDL_H + +#include "common/stdafx.h" +#include "backends/platform/sdl/sdl-common.h" + +//#include "CEkeys.h" + +#include + + +class OSystem_MAEMO : public OSystem_SDL { +public: + OSystem_MAEMO() {}; + + void loadGFXMode(); +}; + +#endif diff --git a/backends/platform/maemo/main.cpp b/backends/platform/maemo/main.cpp new file mode 100644 index 0000000000..2631d35000 --- /dev/null +++ b/backends/platform/maemo/main.cpp @@ -0,0 +1,81 @@ +/* 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 +#include + +#include +#include + +#include "backends/maemo/maemo-sdl.h" +#include "base/main.h" +#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); +} + +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); + + g_system = new OSystem_MAEMO(); + assert(g_system); + + // Invoke the actual ScummVM main entry point: + int res = scummvm_main(argc, argv); + g_system->quit(); // TODO: Consider removing / replacing this! + + /* Deinitialize OSSO */ + //osso_deinitialize(osso_context); + + set_doubling(0); + + return res; +} diff --git a/backends/platform/maemo/portdefs.h b/backends/platform/maemo/portdefs.h new file mode 100644 index 0000000000..f825e5c4e2 --- /dev/null +++ b/backends/platform/maemo/portdefs.h @@ -0,0 +1,69 @@ +/* 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void set_doubling(unsigned char enable); + +#endif /* PORTDEFS_H */ + + -- cgit v1.2.3