Example #1
0
bool AndroidSdlEventSource::handleMouseButtonDown(SDL_Event &ev, Common::Event &event) {
	if (ev.button.button == SDL_BUTTON_LEFT)
		event.type = Common::EVENT_LBUTTONDOWN;
	else if (ev.button.button == SDL_BUTTON_RIGHT)
		event.type = Common::EVENT_RBUTTONDOWN;
#if defined(SDL_BUTTON_WHEELUP) && defined(SDL_BUTTON_WHEELDOWN)
	else if (ev.button.button == SDL_BUTTON_WHEELUP)
		event.type = Common::EVENT_WHEELUP;
	else if (ev.button.button == SDL_BUTTON_WHEELDOWN)
		event.type = Common::EVENT_WHEELDOWN;
#endif
#if defined(SDL_BUTTON_MIDDLE)
	else if (ev.button.button == SDL_BUTTON_MIDDLE) {
		event.type = Common::EVENT_MBUTTONDOWN;

		static int show_onscreen = 0;
		if (show_onscreen == 0) {
			SDL_ANDROID_SetScreenKeyboardShown(0);
			show_onscreen++;
		} else if (show_onscreen==1) {
			SDL_ANDROID_SetScreenKeyboardShown(1);
			show_onscreen++;
		}
		if (show_onscreen == 2)
			show_onscreen = 0;
	}
#endif
	else
		return false;

	processMouseEvent(event, ev.button.x, ev.button.y);

	return true;
}
Example #2
0
  void checkfilename (char *currentfilename)
  {
  	char *ret = NULL, *fname = NULL;
  	char *ptr;
  	char actualpath [PATH_MAX];
  	struct dirent **namelist;
  	DIR *dir;
  	
  	if ((dir = opendir(currentfilename)))
  	{ 
  	  dirList=currentfilename;
  	  ptr = realpath(currentfilename, actualpath);
  	  strcpy(currentDir, ptr);
  	  closedir(dir);
  	}
  	else 
  	{
  	  if ((menu_load_type == MENU_SELECT_FILE) && confirmselection)
  	  {
		selectedFilePath=currentfilename;
	  if (autostart_autodetect(selectedFilePath.c_str(), NULL, 0, AUTOSTART_MODE_RUN) < 0) {
                //ui_error("could not start auto-image");
            }
#ifdef ANDROID	  
		SDL_ANDROID_SetScreenKeyboardShown(1);
#endif
		running = false;
	  }
	  else if ((menu_load_type == MENU_SELECT_DRIVE8) && confirmselection)
  	  {
		selectedFilePath8=currentfilename;
		int err8 = file_system_attach_disk(8, selectedFilePath8.c_str());
	  }
	  else if ((menu_load_type == MENU_SELECT_DRIVE9) && confirmselection)
  	  {
		selectedFilePath9=currentfilename;
		int err9 = file_system_attach_disk(9, selectedFilePath9.c_str());
	  }
	  else if ((menu_load_type == MENU_SELECT_DRIVE10) && confirmselection)
  	  {
		selectedFilePath10=currentfilename;
		int err10 = file_system_attach_disk(10, selectedFilePath9.c_str());
	  }
	  else if ((menu_load_type == MENU_SELECT_DRIVE11) && confirmselection)
  	  {
		selectedFilePath11=currentfilename;
		int err11 = file_system_attach_disk(11, selectedFilePath10.c_str());
	  }
  	  if (confirmselection)
	    unraise_loadMenu_guichan();
  	}
  }
Example #3
0
int main( int argc, char* argv[] )
{
	int i;
	char screenres[128] = "640x480x24";
	char clientcmd[PATH_MAX] = "";
	char * cmd = "";
	char fontpath[PATH_MAX] = "";
	char* args[64] = {
		"XSDL",
		port,
		"-nolock",
		"-noreset",
		"-nopn",
		"-nolisten",
		"unix",
		"-fp",
		fontpath,
		"-screen",
		screenres,
	};
	int argnum = 11;
	char * envp[] = { NULL };
	int printHelp = 1;
	int screenResOverride = 0;
	int screenButtons = 0;
	int warnDiskSpaceMb = 0;
	int builtinKeyboard = 0;
	
	int resolutionW = atoi(getenv("DISPLAY_RESOLUTION_WIDTH"));
	int resolutionH = atoi(getenv("DISPLAY_RESOLUTION_HEIGHT"));
	int displayW = atoi(getenv("DISPLAY_WIDTH_MM"));
	int displayH = atoi(getenv("DISPLAY_HEIGHT_MM"));

	__android_log_print(ANDROID_LOG_INFO, "XSDL", "Actual video resolution %d/%dx%d/%d", resolutionW, displayW, resolutionH, displayH);
	setupEnv();

	SDL_ANDROID_SetScreenKeyboardShown(0);

	XSDL_initSDL();

	while( argc > 1 )
	{
		if( argv[1][0] == ':')
		{
			strcpy(port, argv[1]);
		}
		else if( strcmp(argv[1], "-nohelp") == 0 )
		{
			printHelp = 0;
		}
		else if( strcmp(argv[1], "-screen") == 0 )
		{
			screenResOverride = 1;
			argc--;
			argv++;
			strcpy(screenres, argv[1]);
		}
		else if( strcmp(argv[1], "-screenbuttons") == 0 )
		{
			screenButtons = 1;
		}
		else if( strcmp(argv[1], "-warndiskspacemb") == 0 && argc > 2 )
		{
			warnDiskSpaceMb = atoi(argv[2]);
			argc--;
			argv++;
		}
		else
		{
			args[argnum] = argv[1];
			argnum++;
		}
		argc--;
		argv++;
	}

	if (getenv("SDL_RESTART_PARAMS") && getenv("SDL_RESTART_PARAMS")[0])
		strcpy(port, getenv("SDL_RESTART_PARAMS"));

	snprintf(fontpath, sizeof(fontpath),
						"%s/img/usr/share/fonts/X11/misc,"
						"%s/img/usr/share/fonts/X11/Type1,"
						"%s/img/usr/share/fonts/X11/100dpi,"
						"%s/img/usr/share/fonts/X11/75dpi,"
						"%s/img/usr/share/fonts/X11/cyrillic,"
						"%s/usr/share/fonts",
						getenv("SECURE_STORAGE_DIR"),
						getenv("SECURE_STORAGE_DIR"),
						getenv("SECURE_STORAGE_DIR"),
						getenv("SECURE_STORAGE_DIR"),
						getenv("SECURE_STORAGE_DIR"),
						getenv("SECURE_STORAGE_DIR") );

	XSDL_unpackFiles(warnDiskSpaceMb);

	if( !screenResOverride )
	{
		XSDL_showConfigMenu(&resolutionW, &displayW, &resolutionH, &displayH, &builtinKeyboard, &screenButtons);
		sprintf( screenres, "%d/%dx%d/%dx%d", resolutionW, displayW, resolutionH, displayH, SDL_GetVideoInfo()->vfmt->BitsPerPixel );
	}

	XSDL_generateBackground( port, printHelp, resolutionW, resolutionH );

	XSDL_deinitSDL();

	if( printHelp )
	{
		sprintf( clientcmd, "%s/usr/bin/xhost + ; %s/usr/bin/xli -onroot -center %s/background.bmp",
			getenv("SECURE_STORAGE_DIR"), getenv("SECURE_STORAGE_DIR"), getenv("UNSECURE_STORAGE_DIR") );
		args[argnum] = "-exec";
		args[argnum+1] = clientcmd;
		argnum += 2;
	}

	SDL_ANDROID_SetScreenKeyboardShown( 1 );

	if( screenButtons && !SDL_ANDROID_GetScreenKeyboardRedefinedByUser() )
	{
		// Button coords are handled inside xserver/hw/kdrive/sdl/sdl.c
		SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_0, 1);
	}
	else
	{
		SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_0, 0);
		SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_1, 0);
		SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_2, 0);
	}

	{
		char s[16];
		sprintf(s, "%d", builtinKeyboard);
		setenv("XSDL_BUILTIN_KEYBOARD", s, 1);
	}

	__android_log_print(ANDROID_LOG_INFO, "XSDL", "XSDL video resolution %s, args:", screenres);
	for( i = 0; i < argnum; i++ )
		__android_log_print(ANDROID_LOG_INFO, "XSDL", "> %s", args[i]);

	// We should never quit. If that happens, then the server did not start - try with different port number.
	atexit( &retryLaunchWithDifferentPort );

	__android_log_print(ANDROID_LOG_INFO, "XSDL", "XSDL chdir to: %s", getenv("SECURE_STORAGE_DIR"));
	chdir( getenv("SECURE_STORAGE_DIR") ); // Megahack: change /proc/self/cwd to the X.org data dir, and use /proc/self/cwd path in libX11

	android_main( argnum, args, envp ); // Should never exit on success, if we want to terminate we kill ourselves

	return 0;
}