Skip to content

Unable to switch from fullscreen to normal mode in SDL #2532

@DublikuntMux

Description

@DublikuntMux

Summary

When trying to set window.WindowState = WindowState.Normal in fullscreen mode nothing happens with SDL as backend for windowing.

Steps to reproduce

  • Platform: Desktop
  • Framework Version: .NET Core 10.0
  • Silk.NET Version: 2.23.0
  • API: OpenGL
  • API Version: Any GL version
  1. Use this minimal reproducible example:
using System;
using System.Drawing;
using Silk.NET.Input;
using Silk.NET.OpenGL;
using Silk.NET.Windowing;

// ReSharper disable AccessToDisposedClosure

namespace SlikTest;

internal static class Program
{
    private static void Main(string[] args)
    {
        using var window = Window.Create(WindowOptions.Default);

        IInputContext input;
        GL gl = null!;

        window.Load += () =>
        {
            gl = window.CreateOpenGL();
            input = window.CreateInput();
            input.Keyboards[0].KeyDown += (keyboard, _, _) =>
            {
                if (keyboard.IsKeyPressed(Key.Enter))
                {
                    switch (window.WindowState)
                    {
                        case WindowState.Normal:
                            window.WindowState = WindowState.Fullscreen;
                            break;
                        case WindowState.Fullscreen:
                            window.WindowState = WindowState.Normal;
                            break;
                        default:
                            throw new ArgumentOutOfRangeException();
                    }
                }

                if (keyboard.IsKeyPressed(Key.Escape))
                    window.Close();
            };
        };

        window.Render += _ =>
        {
            var color = window.WindowState switch
            {
                WindowState.Normal => Color.Red,
                WindowState.Fullscreen => Color.Green,
                _ => Color.White,
            };
            gl.ClearColor(color);
            gl.Clear(ClearBufferMask.ColorBufferBit);
        };

        window.Run();
    }
}
  1. Press Enter to switch to full screen mode
  2. Press Enter and the window will not return to normal
  3. See bug

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions