OpenTTD Source 20260129-master-g2bb01bd0e4
VideoDriver_CocoaOpenGL Class Reference
Inheritance diagram for VideoDriver_CocoaOpenGL:
VideoDriver_Cocoa VideoDriver Driver

Public Member Functions

std::optional< std::string_view > Start (const StringList &param) override
 Start this driver.
 
void Stop () override
 Stop Cocoa video driver.
 
bool HasEfficient8Bpp () const override
 Has this video driver an efficient code path for palette animated 8-bpp sprites?
 
bool UseSystemCursor () override
 Get whether the mouse cursor is drawn by the video driver.
 
void ClearSystemSprites () override
 Clear all cached sprites.
 
void PopulateSystemSprites () override
 Populate all sprites in cache.
 
bool HasAnimBuffer () override
 Does this video driver support a separate animation buffer in addition to the colour buffer?
 
uint8_t * GetAnimBuffer () override
 Get a pointer to the animation buffer of the video back-end.
 
std::string_view GetName () const override
 Return driver name.
 
std::string_view GetInfoString () const override
 
void AllocateBackingStore (bool force=false) override
 Resize the window.
 
- Public Member Functions inherited from VideoDriver_Cocoa
 VideoDriver_Cocoa (bool uses_hardware_acceleration=false)
 
void MainLoop () override
 Start the main programme loop when using a cocoa video driver.
 
void MakeDirty (int left, int top, int width, int height) override
 Set dirty a rectangle managed by a cocoa video subdriver.
 
bool AfterBlitterChange () override
 Callback invoked after the blitter was changed.
 
bool ChangeResolution (int w, int h) override
 Change the resolution when using a cocoa video driver.
 
bool ToggleFullscreen (bool fullscreen) override
 Toggle between windowed and full screen mode for cocoa display driver.
 
void EditBoxLostFocus () override
 An edit box lost the input focus.
 
std::vector< int > GetListOfMonitorRefreshRates () override
 Get refresh rates of all connected monitors.
 
void MainLoopReal ()
 Main game loop.
 
- Public Member Functions inherited from VideoDriver
 VideoDriver (bool uses_hardware_acceleration=false)
 
virtual void ToggleVsync (bool vsync)
 Change the vsync setting.
 
virtual bool ClaimMousePointer ()
 
virtual bool HasGUI () const
 Whether the driver has a graphical user interface with the end user.
 
virtual void EditBoxGainedFocus ()
 An edit box gained the input focus.
 
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.
 
void GameLoopPause ()
 Pause the game-loop for a bit, releasing the game-state lock.
 
virtual void SetScreensaverInhibited (bool inhibited)
 Prevents the system from going to sleep.
 

Protected Member Functions

void Paint () override
 Paint the window.
 
void * GetVideoPointer () override
 Get a pointer to the video buffer.
 
void ReleaseVideoPointer () override
 Hand video buffer back to the drawing backend.
 
NSView * AllocateDrawView () override
 
- Protected Member Functions inherited from VideoDriver_Cocoa
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
 Lock video buffer for drawing if it isn't already mapped.
 
void UnlockVideoBuffer () override
 Unlock video buffer.
 
bool PollEvent () override
 Poll and handle a single event from the OS.
 
void GameSizeChanged ()
 Handle a change of the display area.
 
std::optional< std::string_view > Initialize ()
 Common driver initialization.
 
void UpdateVideoModes ()
 Update the video mode.
 
bool MakeWindow (int width, int height)
 Build window and view with a given size.
 
- Protected Member Functions inherited from VideoDriver
void UpdateAutoResolution ()
 Apply resolution auto-detection and clamp to sensible defaults.
 
virtual void CheckPaletteAnim ()
 Process any pending palette animation.
 
void StartGameThread ()
 Start the loop for game-tick.
 
void StopGameThread ()
 Stop the loop for the game-tick.
 
void Tick ()
 Give the video-driver a tick.
 
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.
 

Private Member Functions

std::optional< std::string_view > AllocateContext (bool allow_software)
 

Private Attributes

CGLContextObj gl_context
 
uint8_t * anim_buffer
 Animation buffer from OpenGL back-end.
 
std::string driver_info
 Information string about selected driver.
 

Additional Inherited Members

- Public Types inherited from Driver
enum  Type : uint8_t {
  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 VideoDriverGetInstance ()
 Get the currently active instance of the video driver.
 
static std::string GetCaption ()
 Get the caption to use for the game's title bar.
 
- Data Fields inherited from VideoDriver_Cocoa
bool setup
 Window is currently being created.
 
OTTD_CocoaWindowwindow
 Pointer to window object.
 
OTTD_CocoaViewcocoaview
 Pointer to view object.
 
CGColorSpaceRef colour_space
 Window colour space.
 
OTTD_CocoaWindowDelegatedelegate
 Window delegate object.
 
- Static Protected Member Functions inherited from VideoDriver
static void GameThreadThunk (VideoDriver *drv)
 
- Protected Attributes inherited from VideoDriver_Cocoa
Rect dirty_rect
 Region of the screen that needs redrawing.
 
bool buffer_locked
 Video buffer was locked by the main thread.
 
- 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
 
bool uses_hardware_acceleration
 

Detailed Description

Definition at line 17 of file cocoa_ogl.h.

Constructor & Destructor Documentation

◆ VideoDriver_CocoaOpenGL()

VideoDriver_CocoaOpenGL::VideoDriver_CocoaOpenGL ( )
inline

Definition at line 26 of file cocoa_ogl.h.

Member Function Documentation

◆ AllocateBackingStore()

void VideoDriver_CocoaOpenGL::AllocateBackingStore ( bool  force = false)
overridevirtual

Resize the window.

Implements VideoDriver_Cocoa.

Definition at line 272 of file cocoa_ogl.mm.

References GameSizeChanged(), OpenGLBackend::Get(), and OpenGLBackend::Resize().

◆ AllocateContext()

std::optional< std::string_view > VideoDriver_CocoaOpenGL::AllocateContext ( bool  allow_software)
private

Definition at line 249 of file cocoa_ogl.mm.

◆ AllocateDrawView()

NSView * VideoDriver_CocoaOpenGL::AllocateDrawView ( )
overrideprotectedvirtual

Implements VideoDriver_Cocoa.

Definition at line 266 of file cocoa_ogl.mm.

◆ ClearSystemSprites()

void VideoDriver_CocoaOpenGL::ClearSystemSprites ( )
overridevirtual

Clear all cached sprites.

Reimplemented from VideoDriver_Cocoa.

Definition at line 241 of file cocoa_ogl.mm.

References OpenGLBackend::ClearCursorCache(), VideoDriver_Cocoa::ClearSystemSprites(), and OpenGLBackend::Get().

◆ GetAnimBuffer()

uint8_t * VideoDriver_CocoaOpenGL::GetAnimBuffer ( )
inlineoverridevirtual

Get a pointer to the animation buffer of the video back-end.

Returns
Pointer to the buffer or nullptr if no animation buffer is supported.

Reimplemented from VideoDriver.

Definition at line 40 of file cocoa_ogl.h.

References anim_buffer.

◆ GetInfoString()

std::string_view VideoDriver_CocoaOpenGL::GetInfoString ( ) const
inlineoverridevirtual

Reimplemented from VideoDriver.

Definition at line 45 of file cocoa_ogl.h.

◆ GetName()

std::string_view VideoDriver_CocoaOpenGL::GetName ( ) const
inlineoverridevirtual

Return driver name.

Implements Driver.

Definition at line 43 of file cocoa_ogl.h.

◆ GetVideoPointer()

void * VideoDriver_CocoaOpenGL::GetVideoPointer ( )
overrideprotectedvirtual

Get a pointer to the video buffer.

Implements VideoDriver_Cocoa.

Definition at line 288 of file cocoa_ogl.mm.

References OpenGLBackend::Get(), OpenGLBackend::GetAnimBuffer(), BlitterFactory::GetCurrentBlitter(), and OpenGLBackend::GetVideoBuffer().

◆ HasAnimBuffer()

bool VideoDriver_CocoaOpenGL::HasAnimBuffer ( )
inlineoverridevirtual

Does this video driver support a separate animation buffer in addition to the colour buffer?

Returns
True if a separate animation buffer is supported.

Reimplemented from VideoDriver.

Definition at line 39 of file cocoa_ogl.h.

◆ HasEfficient8Bpp()

bool VideoDriver_CocoaOpenGL::HasEfficient8Bpp ( ) const
inlineoverridevirtual

Has this video driver an efficient code path for palette animated 8-bpp sprites?

Returns
True if the driver has an efficient code path for 8-bpp.

Reimplemented from VideoDriver.

Definition at line 31 of file cocoa_ogl.h.

◆ Paint()

◆ PopulateSystemSprites()

void VideoDriver_CocoaOpenGL::PopulateSystemSprites ( )
overridevirtual

Populate all sprites in cache.

Reimplemented from VideoDriver_Cocoa.

Definition at line 234 of file cocoa_ogl.mm.

References OpenGLBackend::Get(), and VideoDriver_Cocoa::PopulateSystemSprites().

◆ ReleaseVideoPointer()

void VideoDriver_CocoaOpenGL::ReleaseVideoPointer ( )
overrideprotectedvirtual

Hand video buffer back to the drawing backend.

Reimplemented from VideoDriver_Cocoa.

Definition at line 297 of file cocoa_ogl.mm.

References OpenGLBackend::Get(), OpenGLBackend::ReleaseAnimBuffer(), and OpenGLBackend::ReleaseVideoBuffer().

◆ Start()

std::optional< std::string_view > VideoDriver_CocoaOpenGL::Start ( const StringList parm)
overridevirtual

Start this driver.

Parameters
parmParameters passed to the driver.
Returns
std::nullopt if everything went okay, otherwise an error message.

Implements Driver.

Definition at line 182 of file cocoa_ogl.mm.

References _cur_resolution, GameSizeChanged(), OpenGLBackend::Get(), BlitterFactory::GetCurrentBlitter(), GetDriverParamBool(), Blitter::GetScreenDepth(), MarkWholeScreenDirty(), and Stop.

◆ Stop()

void VideoDriver_CocoaOpenGL::Stop ( )
overridevirtual

Stop Cocoa video driver.

Reimplemented from VideoDriver_Cocoa.

Definition at line 225 of file cocoa_ogl.mm.

References OpenGLBackend::Destroy(), and VideoDriver_Cocoa::Stop().

◆ UseSystemCursor()

bool VideoDriver_CocoaOpenGL::UseSystemCursor ( )
inlineoverridevirtual

Get whether the mouse cursor is drawn by the video driver.

Returns
True if cursor drawing is done by the video driver.

Reimplemented from VideoDriver.

Definition at line 33 of file cocoa_ogl.h.

Field Documentation

◆ anim_buffer

uint8_t* VideoDriver_CocoaOpenGL::anim_buffer
private

Animation buffer from OpenGL back-end.

Definition at line 20 of file cocoa_ogl.h.

Referenced by GetAnimBuffer().

◆ driver_info

std::string VideoDriver_CocoaOpenGL::driver_info
private

Information string about selected driver.

Definition at line 21 of file cocoa_ogl.h.

◆ gl_context

CGLContextObj VideoDriver_CocoaOpenGL::gl_context
private

Definition at line 18 of file cocoa_ogl.h.


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