Dla tła, pracuję nad Debian Lenny i próbowałem tego zarówno z GNOME, jak i Fluxboksem.Dlaczego X dławi się po tym, jak narysuję do głównego okna?
Zresztą, byłem patrząc jak rysować na pulpicie, a znalazłem i próbowałem ten kod tutaj: http://blog.prashanthellina.com/2007/08/24/drawing-on-your-desktop/
to działało dobrze, z wyjątkiem na kończące go (poprzez wciśnięcie sterującego C), X traci zdolność do tworzenia nowych okien.
myślałem, że może problem został pygame nie zwalniając jakiś zasób, więc dodałem w bloku kodu w celu wyłapania sygnału kill, dając mi następujące:
"""
Run the following command in the shell before executing this script
export SDL_WINDOWID=`xwininfo -root|grep "id:"|sed 's/^.*id: //'|sed 's/ (.*$//'`
"""
import pygame
import sys
import random
import time
import signal
pygame.init()
window = pygame.display.set_mode((1280, 1024))
screen = pygame.display.get_surface()
def handle_sigint(signum, frame):
"""I want to ensure resources are released before bailing."""
print("SIGINT received.");
pygame.display.quit()
pygame.quit()
sys.exit(0)
# Set handler to catch C^C Interupts
signal.signal(signal.SIGINT, handle_sigint)
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit(0)
x = random.choice(range(640))
y = random.choice(range(480))
radius = random.choice(range(100))
col_r = random.choice(range(255))
col_g = random.choice(range(255))
col_b = random.choice(range(255))
time.sleep(.03)
rect = pygame.draw.circle(screen, (col_r, col_g, col_b), (x,y), radius)
pygame.display.update(rect)
A więc jeszcze raz spróbował. Instrukcja print w procedurze obsługi przerwań informuje mnie, że program obsługi działa po zakończeniu, ale nadal mam ten sam problem. Co jeszcze ciekawsze, X nie ma problemów, gdy jest uruchomiony. To tylko po jego zakończeniu.
Czy ktokolwiek może wiedzieć, co się dzieje i co mogę zrobić, aby naprawić kod, aby nie zniszczył mojej sesji X? Z góry dziękuję.
W odpowiedzi na pytania: 1.) Nadal mogę pisać w terminalu, chociaż zaczyna się dziać coś dziwnego. Na przykład, gdy wpisuję ten komentarz w przeglądarce Firefox, nie mam kursora. 2.) Tak, to rozwiązuje problem. 3.) Nie wiem, jak powiedzieć. Próbowałem ps ax | grep gtk i ps ax | grep sesja, ale nie widzę żadnego z tych procesów. I tak, działając w Fluxboksie, nie używam Nautilusa, więc rzeczy związane z gconftool wydają się nieistotne. Ale w każdym razie, dzięki za radę. – BigBeagle
Cóż, wspomniałeś zarówno gnome & fluxbox. Powinienem wspomnieć, że wszystkie moje komentarze były skierowane do gnoma. Przepraszam za to. Jeśli używasz gnoma, * zdecydowanie * powinieneś zobaczyć te procesy. Poza tym nautilus zarządza Twoim komputerem (gnome), a dodatkowo działa jako przeglądarka plików. – DaveParillo