Esempio n. 1
0
// 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();
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
/*** 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) );
    }
}
Esempio n. 4
0
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, &current_vsync_frame);
  } 
  else 
    {
    // New style for vsync and idle time calc
    int wait_till = current_vsync_frame;
    do 
    {
      ioctl(fbdev, OMAPFB_WAITFORVSYNC_FRAME, &current_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();
}
Esempio n. 5
0
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();

}
Esempio n. 6
0
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++;
		}
	}
}