OpenTTD Source: VideoDriver_SDL_Base Class Reference

OpenTTD Source 13.1

Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
VideoDriver_SDL_Base Class Referenceabstract

The SDL video driver. More...

`#include <sdl2_v.h>`

Inheritance diagram for VideoDriver_SDL_Base:

## Public Member Functions
const char * | Start (const StringList &param) override
| Start this driver. More...
void | Stop () override
| Stop this driver.
void | MakeDirty (int left, int top, int width, int height) override
| Mark a particular area dirty. More...
void | MainLoop () override
| Perform the actual drawing.
bool | ChangeResolution (int w, int h) override
| Change the resolution of the window. More...
bool | ToggleFullscreen (bool fullscreen) override
| Change the full screen setting. More...
bool | AfterBlitterChange () override
| Callback invoked after the blitter was changed. More...
bool | ClaimMousePointer () override
void | EditBoxGainedFocus () override
| This is called to indicate that an edit box has gained focus, text input mode should be enabled.
void | EditBoxLostFocus () override
| This is called to indicate that an edit box has lost focus, text input mode should be disabled.
std::vector< int > | GetListOfMonitorRefreshRates () override
| Get a list of refresh rates of each available monitor. More...
const char * | GetName () const override
| Get the name of this driver. More...
const char * | GetInfoString () const override
Public Member Functions inherited from VideoDriver
virtual void | ToggleVsync (bool vsync)
| Change the vsync setting. More...
virtual bool | UseSystemCursor ()
| Get whether the mouse cursor is drawn by the video driver. More...
virtual void | PopulateSystemSprites ()
| Populate all sprites in cache.
virtual void | ClearSystemSprites ()
| Clear all cached sprites.
virtual bool | HasGUI () const
| Whether the driver has a graphical user interface with the end user. More...
virtual bool | HasEfficient8Bpp () const
| Has this video driver an efficient code path for palette animated 8-bpp sprites? More...
virtual bool | HasAnimBuffer ()
| Does this video driver support a separate animation buffer in addition to the colour buffer? More...
virtual uint8 * | GetAnimBuffer ()
| Get a pointer to the animation buffer of the video back-end. More...
virtual int | GetSuggestedUIScale ()
| Get a suggested default GUI scale taking screen DPI into account.
void | QueueOnMainThread (std::function< void()> &&func)
| Queue a function to be called on the main thread with game state lock held and video buffer locked. More...
void | GameLoopPause ()
| Pause the game-loop for a bit, releasing the game-state lock. More...

## Protected Member Functions
Dimension | GetScreenSize () const override
| Get the resolution of the main screen.
void | InputLoop () override
| Handle input logic, is CTRL pressed, should we fast-forward, etc.
bool | LockVideoBuffer () override
| Make sure the video buffer is ready for drawing. More...
void | UnlockVideoBuffer () override
| Unlock a previously locked video buffer.
void | CheckPaletteAnim () override
| Process any pending palette animation.
bool | PollEvent () override
| Process a single system event. More...
void | ClientSizeChanged (int w, int h, bool force)
| Indicate to the driver the client-side might have changed.
virtual bool | AllocateBackingStore (int w, int h, bool force=false)=0
| (Re-)create the backing store.
virtual void * | GetVideoPointer ()=0
| Get a pointer to the video buffer.
virtual void | ReleaseVideoPointer ()=0
| Hand video buffer back to the painting backend.
virtual bool | CreateMainWindow (uint w, uint h, uint flags=0)
| Create the main window.
Protected Member Functions inherited from VideoDriver
virtual float | GetDPIScale ()
| Get DPI scaling factor of the screen OTTD is displayed on. More...
void | UpdateAutoResolution ()
| Apply resolution auto-detection and clamp to sensible defaults.
virtual void | Paint ()
| Paint the window.
void | StartGameThread ()
| Start the loop for game-tick.
void | StopGameThread ()
| Stop the loop for the game-tick. More...
void | Tick ()
| Give the video-driver a tick. More...
void | SleepTillNextTick ()
| Sleep till the next tick is about to happen.
std::chrono::steady_clock::duration | GetGameInterval ()
std::chrono::steady_clock::duration | GetDrawInterval ()
void | DrainCommandQueue ()
| Execute all queued commands.

## Protected Attributes
struct SDL_Window * | sdl_window
| Main SDL window.
Palette | local_palette
| Current palette to use for drawing.
bool | buffer_locked
| Video buffer was locked by the main thread.
Rect | dirty_rect
| Rectangle encompassing the dirty area of the video buffer.
std::string | driver_info
| Information string about selected driver.
Protected Attributes inherited from VideoDriver
const uint | ALLOWED_DRIFT = 5
| How many times videodriver can miss deadlines without it being overly compensated.
std::chrono::steady_clock::time_point | next_game_tick
std::chrono::steady_clock::time_point | next_draw_tick
bool | fast_forward_key_pressed
| The fast-forward key is being pressed.
bool | fast_forward_via_key
| The fast-forward was enabled by key press.
bool | is_game_threaded
std::thread | game_thread
std::mutex | game_state_mutex
std::mutex | game_thread_wait_mutex

## Private Member Functions
void | LoopOnce ()
void | MainLoopCleanup ()
bool | CreateMainSurface (uint w, uint h, bool resize)
const char * | Initialize ()

## Private Attributes
bool | edit_box_focused
| This is true to indicate that keyboard input is in text input mode, and SDL_TEXTINPUT events are enabled.
int | startup_display

## Additional Inherited Members
Public Types inherited from Driver
enum | Type { DT_BEGIN = 0, DT_MUSIC = 0, DT_SOUND, DT_VIDEO, DT_END }
| The type of driver. More...
Static Public Member Functions inherited from VideoDriver
static VideoDriver * | GetInstance ()
| Get the currently active instance of the video driver.
Static Protected Member Functions inherited from VideoDriver
static void | GameThreadThunk (VideoDriver *drv)

## Detailed Description

The SDL video driver.

Definition at line 18 of file sdl2_v.h.

## Member Function Documentation

## ◆ AfterBlitterChange()

bool VideoDriver_SDL_Base::AfterBlitterChange | ( |  | ) |
| overridevirtual

Callback invoked after the blitter was changed.

Returns
  True if no error.

Reimplemented from VideoDriver.

Definition at line 679 of file sdl2_v.cpp.

References BlitterFactory::GetCurrentBlitter(), and sdl_window.

## ◆ ChangeResolution()

bool VideoDriver_SDL_Base::ChangeResolution | ( | int | w,
|  | int | h
| ) |  |
| overridevirtual

Change the resolution of the window.

Parameters

  w | The new width.
  h | The new height.

Returns
  True if the change succeeded.

Implements VideoDriver.

Definition at line 644 of file sdl2_v.cpp.

## ◆ GetListOfMonitorRefreshRates()

std::vector< int > VideoDriver_SDL_Base::GetListOfMonitorRefreshRates | ( |  | ) |
| overridevirtual

Get a list of refresh rates of each available monitor.

Returns
  A vector of the refresh rates of all available monitors.

Reimplemented from VideoDriver.

Definition at line 230 of file sdl2_v.cpp.

## ◆ GetName()

const char* VideoDriver_SDL_Base::GetName | ( |  | ) | const
| inlineoverridevirtual

Get the name of this driver.

Returns
  The name of the driver.

Implements Driver.

Definition at line 44 of file sdl2_v.h.

## ◆ LockVideoBuffer()

bool VideoDriver_SDL_Base::LockVideoBuffer | ( |  | ) |
| overrideprotectedvirtual

Make sure the video buffer is ready for drawing.

Returns
  True if the video buffer has to be unlocked.

Reimplemented from VideoDriver.

Definition at line 695 of file sdl2_v.cpp.

References buffer_locked.

## ◆ MakeDirty()

void VideoDriver_SDL_Base::MakeDirty | ( | int | left,
|  | int | top,
|  | int | width,
|  | int | height
| ) |  |
| overridevirtual

Mark a particular area dirty.

Parameters

  left | The left most line of the dirty area.
  top | The top most line of the dirty area.
  width | The width of the dirty area.
  height | The height of the dirty area.

Implements VideoDriver.

Definition at line 33 of file sdl2_v.cpp.

References BoundingRect(), and dirty_rect.

Referenced by CheckPaletteAnim().

## ◆ PollEvent()

bool VideoDriver_SDL_Base::PollEvent | ( |  | ) |
| overrideprotectedvirtual

Process a single system event.

Returns
  False if there are no more events to process.

Reimplemented from VideoDriver.

Definition at line 367 of file sdl2_v.cpp.

## ◆ Start()

const char * VideoDriver_SDL_Base::Start | ( | const StringList & | parm | ) |
| overridevirtual

Start this driver.

Parameters

  parm | Parameters passed to the driver.

Returns
  nullptr if everything went okay, otherwise an error message.

Implements Driver.

Definition at line 527 of file sdl2_v.cpp.

References error(), and BlitterFactory::GetCurrentBlitter().

Referenced by VideoDriver_SDL_OpenGL::Start().

## ◆ ToggleFullscreen()

bool VideoDriver_SDL_Base::ToggleFullscreen | ( | bool | fullscreen | ) |
| overridevirtual

Change the full screen setting.

Parameters

  fullscreen | The new setting.

Returns
  True if the change succeeded.

Implements VideoDriver.

Definition at line 649 of file sdl2_v.cpp.

References Debug, and sdl_window.

The documentation for this class was generated from the following files:

- src/video/sdl2_v.h
- src/video/sdl2_v.cpp