// Draws the buffer to the screen void _Graphics::EndFrame() { // Draw cursor if(ShowCursor) Interface.DrawImage(_Interface::IMAGE_MOUSECURSOR, (int)Input.GetMouseX(), (int)Input.GetMouseY(), 16, 16); Fader.Draw(); irrDriver->endScene(); // Handle screenshots if(ScreenshotRequested) CreateScreenshot(); }
bool render_screen (bool immediate) { if (savestate_state == STATE_DOSAVE) { if (delay_savestate_frame > 0) --delay_savestate_frame; else { CreateScreenshot(); save_thumb(screenshot_filename); savestate_state = 0; } } #ifdef WITH_LOGGING RefreshLiveInfo(); #endif return true; }
/*** Procesamiento de los dispositivos de entrada ***/ void Input( float elapsed ) { SDL_Event event; /* Proceso los eventos de input hasta que no haya más */ while( SDL_PollEvent( &event ) ) { switch( event.type ) { case SDL_KEYUP: switch( event.key.keysym.sym ) { case SDLK_ESCAPE: g_ExitProgram = GL_TRUE; break; case SDLK_F6: CreateScreenshot( "Ejercicio" ); break; case SDLK_w: cam.walk = GL_FALSE; break; case SDLK_s: cam.walkinv= GL_FALSE; break; case SDLK_d: cam.strafe= GL_FALSE; break; case SDLK_a: cam.strafeinv= GL_FALSE; break; case SDLK_LSHIFT: Brun = GL_FALSE; break; case SDLK_SPACE: jump = GL_FALSE; break; default: PrintError( "Unhandled KEYUP event", GL_TRUE ); } break; case SDL_KEYDOWN: switch( event.key.keysym.sym ) { case SDLK_ESCAPE: break; case SDLK_F6: break; case SDLK_w: cam.walk = GL_TRUE; break; case SDLK_s: cam.walkinv = GL_TRUE; break; case SDLK_d: cam.strafe= GL_TRUE; break; case SDLK_a: cam.strafeinv= GL_TRUE; break; case SDLK_LSHIFT: Brun = GL_TRUE; break; case SDLK_SPACE: jump = GL_TRUE; break; default: PrintError( "Unhandled KEYDOWN event", GL_TRUE ); } break; /* Botones del mouse */ case SDL_MOUSEBUTTONUP: switch( event.button.button ) { case SDL_BUTTON_LEFT: break; case SDL_BUTTON_RIGHT: renderUnderwater = !renderUnderwater; break; default: PrintError( "Unhandled MOUSEBUTTONUP event", GL_TRUE ); } break; case SDL_MOUSEBUTTONDOWN: switch( event.button.button ) { case SDL_BUTTON_LEFT: atk1 = GL_TRUE; break; default: PrintError( "Unhandled MOUSEBUTTONDOWN event", GL_TRUE ); } break; /* Movimiento del mouse */ case SDL_MOUSEMOTION: { /* Capturo los movimientos */ GLfloat xrel, yrel; xrel = (GLfloat)event.motion.xrel; yrel = (GLfloat)event.motion.yrel; if(xrel !=0 && xrel> -100 && xrel < 100) Yaw(&cam,xrel*elapsed*sensibility,GL_TRUE); if(yrel !=0 && yrel> -100 && yrel < 100) Pitch(&cam,yrel*elapsed*sensibility,GL_TRUE); } break; default: PrintError( "Unhandled type of event", GL_TRUE ); } /* Borro el mensaje para evitar procesarlo de nuevo */ memset( &event, 0, sizeof(SDL_Event) ); } }
void flush_screen () { if (savestate_state == STATE_DOSAVE) { if(delay_savestate_frame > 0) --delay_savestate_frame; else { CreateScreenshot(); save_thumb(screenshot_filename); savestate_state = 0; } } #ifdef WITH_LOGGING RefreshLiveInfo(); #endif unsigned long start = read_processor_time(); if(current_vsync_frame == 0) { // Old style for vsync and idle time calc if(start < next_synctime && next_synctime - start > time_per_frame - 1000) usleep((next_synctime - start) - 750); ioctl(fbdev, OMAPFB_WAITFORVSYNC, ¤t_vsync_frame); } else { // New style for vsync and idle time calc int wait_till = current_vsync_frame; do { ioctl(fbdev, OMAPFB_WAITFORVSYNC_FRAME, ¤t_vsync_frame); } while (wait_till >= current_vsync_frame); if(wait_till + 1 != current_vsync_frame) { // We missed a vsync... next_synctime = 0; } current_vsync_frame += currprefs.gfx_framerate; } last_synctime = read_processor_time(); SDL_Flip(prSDLScreen); if(!screen_is_picasso) gfxvidinfo.bufmem = (uae_u8 *)prSDLScreen->pixels; if(last_synctime - next_synctime > time_per_frame * (1 + currprefs.gfx_framerate) - 1000 || next_synctime < start) adjust_idletime(-1); else adjust_idletime(next_synctime - start); if (last_synctime - next_synctime > time_per_frame - (long)5000) next_synctime = last_synctime + time_per_frame * (1 + currprefs.gfx_framerate); else next_synctime = next_synctime + time_per_frame * (1 + currprefs.gfx_framerate); init_row_map(); }
void flush_screen () { //SDL_UnlockSurface (prSDLScreen); if (show_inputmode) { inputmode_redraw(); } if (savestate_state == STATE_DOSAVE) { if(delay_savestate_frame > 0) --delay_savestate_frame; else { CreateScreenshot(); save_thumb(screenshot_filename); savestate_state = 0; } } unsigned long start = read_processor_time(); //if(start < next_synctime && next_synctime - start > time_per_frame - 1000) // usleep((next_synctime - start) - 1000); //SDL_Flip(prSDLScreen); if (current_resource_amigafb == 1) { current_resource_amigafb = 0; vc_dispmanx_resource_write_data( dispmanxresource_amigafb_1, VC_IMAGE_RGB565, gfxvidinfo.width * 2, gfxvidinfo.bufmem, &blit_rect ); dispmanxupdate = vc_dispmanx_update_start( 10 ); vc_dispmanx_element_change_source(dispmanxupdate,dispmanxelement,dispmanxresource_amigafb_1); vc_dispmanx_update_submit(dispmanxupdate,vsync_callback,NULL); //vc_dispmanx_update_submit_sync(dispmanxupdate); } else { current_resource_amigafb = 1; vc_dispmanx_resource_write_data( dispmanxresource_amigafb_2, VC_IMAGE_RGB565, gfxvidinfo.width * 2, gfxvidinfo.bufmem, &blit_rect ); dispmanxupdate = vc_dispmanx_update_start( 10 ); vc_dispmanx_element_change_source(dispmanxupdate,dispmanxelement,dispmanxresource_amigafb_2); vc_dispmanx_update_submit(dispmanxupdate,vsync_callback,NULL); } last_synctime = read_processor_time(); if(last_synctime - next_synctime > time_per_frame - 1000) adjust_idletime(0); else adjust_idletime(next_synctime - start); if(last_synctime - next_synctime > time_per_frame - 5000) next_synctime = last_synctime + time_per_frame * (1 + currprefs.gfx_framerate); else next_synctime = next_synctime + time_per_frame * (1 + currprefs.gfx_framerate); init_row_map(); }
void flush_screen () { if (show_inputmode) inputmode_redraw(); if (savestate_state == STATE_DOSAVE) { if(delay_savestate_frame > 0) --delay_savestate_frame; else { CreateScreenshot(); save_thumb(screenshot_filename); savestate_state = 0; } } unsigned long start = read_processor_time(); if(start < next_synctime && next_synctime - start > time_per_frame - 1000) usleep((next_synctime - start) - 750); SDL_Flip(prSDLScreen); last_synctime = read_processor_time(); if(!screen_is_picasso) gfxvidinfo.bufmem = (uae_u8 *)prSDLScreen->pixels; if(last_synctime - next_synctime > time_per_frame - 1000) adjust_idletime(0); else adjust_idletime(next_synctime - start); if(last_synctime - next_synctime > time_per_frame - 5000) next_synctime = last_synctime + time_per_frame * (1 + currprefs.gfx_framerate); else next_synctime = next_synctime + time_per_frame * (1 + currprefs.gfx_framerate); init_row_map(); if(stylusClickOverride) { justClicked = 0; mouseMoving = 0; } else { if(justClicked) { buttonstate[0] = 0; buttonstate[2] = 0; justClicked = 0; } if(mouseMoving) { if(fcounter >= currprefs.pandora_tapDelay) { if(doStylusRightClick) { buttonstate[2] = 1; } else { buttonstate[0] = 1; mouseMoving = 0; justClicked = 1; fcounter = 0; } } fcounter++; } } }