sdlxGetFullscreenDisplayModes function video

List<SdlxDisplayMode>? sdlxGetFullscreenDisplayModes(
  1. int displayID
)

Get a list of fullscreen display modes available on a display.

The display modes are sorted in this priority:

  • w -> largest to smallest
  • h -> largest to smallest
  • bits per pixel -> more colors to fewer colors
  • packed pixel layout -> largest to smallest
  • refresh rate -> highest to lowest
  • pixel density -> lowest to highest

\param displayID the instance ID of the display to query. \param count a pointer filled in with the number of display modes returned, may be NULL. \returns a NULL terminated array of display mode pointers or NULL on failure; call SDL_GetError() for more information. This is a single allocation that should be freed with SDL_free() when it is no longer needed.

\threadsafety This function should only be called on the main thread.

\since This function is available since SDL 3.2.0.

\sa SDL_GetDisplays

extern SDL_DECLSPEC SDL_DisplayMode ** SDLCALL SDL_GetFullscreenDisplayModes(SDL_DisplayID displayID, int *count)

See also:

Implementation

List<SdlxDisplayMode>? sdlxGetFullscreenDisplayModes(int displayID) =>
    ffi.using((arena) {
      final countPointer = arena<Int32>();
      final resultPointer = sdlGetFullscreenDisplayModes(
        displayID,
        countPointer,
      );

      if (resultPointer == nullptr) {
        return null;
      }

      try {
        final count = countPointer.value;
        final result = <SdlxDisplayMode>[];

        for (var i = 0; i < count; i++) {
          final modePointer = (resultPointer + i).value;
          if (modePointer != nullptr) {
            result.add(SdlxDisplayMode.fromPointer(modePointer));
          }
        }

        return List<SdlxDisplayMode>.unmodifiable(result);
      } finally {
        sdlFree(resultPointer.cast<Void>());
      }
    });