Argh! pygame.mixer.quit() is hanging. ('keydown', 'escape') Exit progress: begin Exit progress: pygame.display.get_init() Exit progress: pygame.display.get_surface() Exit progress: screen.unlock() Exit progress: pygame.display.set_mode((16, 64)) Exit progress: pygame.display.flip() Exit progress: pygame.display.quit() Exit progress: pygame.mixer.quit()
Gumm On Wed, Jul 16, 2014 at 2:49 PM, Sam Bull <sam.hack...@sent.com> wrote: > On mer, 2014-07-16 at 14:36 -0700, B W wrote: > > The issue seems to be in the shutdown/cleanup code of pygame. > > The program appears to only use the pygame.display module, so if it is > currently crashing in pygame.exit(), then it may be an idea to try > initialising and exiting individual modules, to see if the problem is in > a single module's shutdown. > > So, replace pygame.init() with pygame.display.init(), and pygame.quit() > with pygame.display.quit(). If the crash disappears, then start adding > additional module init's and quit's and see if you can narrow the crash > into a single module's quit() function. Other modules include > pygame.mixer and pygame.scrap. >
import sys import time import pygame from pygame.locals import * pygame.display.init() pygame.mixer.init() #pygame.scrap.init() #pygame.error: no display mode is set resolution = 1024, 768 image_size = 200 # these two lines run better over ssh -X ... resolution = 196, 32 image_size = 8 screen = pygame.display.set_mode(resolution, DOUBLEBUF) screen_rect = screen.get_rect() scroll_rect = Rect(screen_rect) scroll_rect.width *= 5 scroll_rect.height *= 5 clock = pygame.time.Clock() images = ( pygame.Surface((image_size, image_size)), pygame.Surface((image_size, image_size)), ) images[0].fill(Color('slategray2')) images[1].fill(Color('slategray3')) image_rect = images[0].get_rect() bg_color = Color('black') dx = -1 dy = -1 max_fps = 0 high_fps = 0 running = True while running: dt = clock.tick(max_fps) fps = int(round(clock.get_fps())) if fps > high_fps: high_fps = fps meter = 'o' * (fps / 20) pygame.display.set_caption('Fps {2}/{0} {1}'.format(fps, meter, high_fps)) scroll_rect.move_ip(dx, dy) if not scroll_rect.contains(screen_rect): dx = -dx dy = -dy screen.fill(bg_color) line_num = 0 for y in xrange(scroll_rect.y, scroll_rect.bottom, image_size): checker = 0 if line_num % 2 else 1 line_num += 1 for x in xrange(scroll_rect.x, scroll_rect.right, image_size): image_rect.x = x image_rect.y = y if screen_rect.colliderect(image_rect): screen.blit(images[checker], image_rect) checker = 0 if checker == 1 else 1 pygame.display.flip() for e in pygame.event.get(): if e.type == KEYDOWN: print('keydown',pygame.key.name(e.key)) sys.stdout.flush() if e.key == K_ESCAPE: running = False def progress(n): print('Exit progress: {0}'.format(n)) sys.stdout.flush() progress('begin') progress('pygame.display.get_init()') pygame.display.get_init() progress('pygame.display.get_surface()') pygame.display.get_surface() progress('screen.unlock()') screen.unlock() progress('pygame.display.set_mode((16, 64))') pygame.display.set_mode((16, 64)) progress('pygame.display.flip()') pygame.display.flip() progress('pygame.display.quit()') pygame.display.quit() progress('pygame.mixer.quit()') pygame.mixer.quit() progress('pygame.scrap.quit()') pygame.scrap.quit() progress('sys.exit()') sys.exit() progress('done')