added pygame.SCALED to work around fullscreen bug

This commit is contained in:
ohsqueezy 2022-10-25 15:25:48 -04:00
parent ee9bdd7678
commit eb83f0d7c2
1 changed files with 7 additions and 18 deletions

View File

@ -1,6 +1,7 @@
from os import environ from os import environ
from sys import maxsize, platform from sys import maxsize, platform
import pygame
from pygame import display, image, mouse from pygame import display, image, mouse
from pygame.locals import * from pygame.locals import *
@ -33,16 +34,16 @@ class Display(GameChild):
environ["SDL_VIDEO_CENTERED"] = "1" environ["SDL_VIDEO_CENTERED"] = "1"
def init_screen(self): def init_screen(self):
# flags = 0
full = False full = False
if self.fullscreen_requested(): if self.fullscreen_requested():
# flags = -abs(FULLSCREEN)
full = True full = True
self.set_screen(0x0, fs=full)
# Added pygame.SCALED to avoid fullscreen bug
# <https://www.pygame.org/docs/ref/display.html#pygame.display.toggle_fullscreen>
self.set_screen(pygame.SCALED, fs=full)
def fullscreen_requested(self): def fullscreen_requested(self):
return not self.check_command_line(self.windowed_flag) and \ return not self.check_command_line(self.windowed_flag) and self.fullscreen_enabled
self.fullscreen_enabled
def set_screen(self, flags=0x0, dimensions=None, fs=False): def set_screen(self, flags=0x0, dimensions=None, fs=False):
self.dimensions_changed = dimensions is not None self.dimensions_changed = dimensions is not None
@ -80,16 +81,4 @@ class Display(GameChild):
def toggle_fullscreen(self, event): def toggle_fullscreen(self, event):
if self.delegate.compare(event, "toggle-fullscreen"): if self.delegate.compare(event, "toggle-fullscreen"):
screen = self.screen pygame.display.toggle_fullscreen()
cpy = screen.convert()
flags = self.screen.get_flags()
if flags & 0x80000000:
full = False
if not platform == "win32" and maxsize >> 33:
flags ^= 0x80000000
else:
flags ^= -0x80000000
else:
full = True
self.set_screen(flags, fs=full)
screen.blit(cpy, (0, 0))