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; }
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(); } }
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; }