added pygame.SCALED to work around fullscreen bug
This commit is contained in:
parent
ee9bdd7678
commit
eb83f0d7c2
|
@ -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))
|
|
||||||
|
|
Loading…
Reference in New Issue