Toon posts:

[Python] Front-end voor xmame

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer een kleine front-end voor xmame te maken in Python, met behulp van pygame & SDL (op Ubuntu). De bedoeling is om deze front-end uiteindelijk in een zelfgemaakte arcade kast (op fullscreen uiteraard) te laten draaien.

Ik loop nu tegen het probleem aan dat, wanneer de front-end in fullscreen draait, het programma dat gestart wordt (xmame) niet op de voorgrond kan komen. Het resultaat is een geheel zwart scherm. Het lijkt dus wel alsof zowel de front-end als xmame worstelen om fullscreen te mogen draaien, en dat ze beide verliezen :P

Ik heb nu een workaround toegepast waarbij vlak vóórdat xmame wordt opgestart, de front-end _niet_ meer fullscreen wordt gemaakt. Zodra xmame is afgelopen wordt de front-end echter weer fullscreen. Dit werkt op zich wel, met één nadeel: in de tussentijd (voordat xmame kan opstarten en fullscreen kan worden) wordt het venster en de desktop volledig zichtbaar. Voor een arcade kast is dit natuurlijk niet zo heel erg mooi.

Ik heb mijn code teruggebracht tot een klein voorbeeld fragment om het wat duidelijker te maken:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#! /usr/bin/env python

import pygame, sys, os
from pygame.locals import *

#
# Create a SDL window.
#
pygame.init()
window = pygame.display.set_mode ((1024, 768), FULLSCREEN)
screen = pygame.display.get_surface()
pygame.mouse.set_visible (0)

#
# Put everything on the screen.
#
def updateDisplay():
    font = pygame.font.Font (None, 24)
    text = font.render ("Press any key to do something or ESC to quit.", True, (255,255,255))
    screen.blit (text, text.get_rect())
    pygame.display.flip()

#
# Start another app.
#
def doSomething():
    # Disable fullscreen.
    pygame.display.set_mode ((1024, 768))

    # Start XMAME
    os.system ("xmame -rompath /path/to/roms -fullscreen sf2.zip")

    # Enable fullscreen
    pygame.display.set_mode ((1024, 768), FULLSCREEN)
    updateDisplay()

#
# Main Loop - Process all events.
#
updateDisplay()

while True: 
    for event in pygame.event.get(): 
        if (event.type == QUIT): 
            sys.exit(0)
        elif (event.type == KEYDOWN):
            if (event.key == K_ESCAPE):
                exit(0)
            else:
                doSomething()


Heeft iemand een oplossing/workaround voor dit probleem?

Verwijderd

Geen ervaring met Python of pygame, maar kun je je Python window niet borderless maken, met een grootte van display.width x display.height, en beginnend op (0, 0)?
Dan bijten de beide FULLSCREEN modi elkaar niet, en blijft je Python window toch beeldvullend.