[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Bug: Circle tearing with mouse clicks within the window.



Hello Michael and welcome to the community :)


I tried your code on my Linux setup: Python 3.8.5, Pygame 2.0.0, SDL 2.0.12, KDE neon 5.20.04, Mesa DRI Intel HD Graphics 3000...


After adding the missing


     WHITE = (255, 255, 255)


and running your code, I didn't notice tearing as I moved the circle around. But for me, KDE uses KWin, which is a composited window manager. Is Xubuntu using XFWM? I'm going out on a limb, but I think that is not a composited WM, and might have a different interaction with X11 and appear differently. Have you experimented with installing a different distro, like Kubuntu, then login and run your test and see if it behaves differently?

~ Michael



On Monday, December 14, 2020 7:00:22 PM PST you wrote:

> Python 3.8.6

> Pygame 2.0.0

> Xubuntu 20.10

> Nvidia 1060 6GB

>

> The following code, when run, causes an issue where the circle starts to

> tear as it moves across the screen if I click on the active window. Where I

> click seems to matter also, as the tearing can be adjusted by clicking at

> various points from top to bottom. I'm not checking for mouse events in the

> code, but I would imagine their still being tracked.

>

> The tearing continues to happen after I've stopped and ran it again as

> well. It does go back to normal after a few tries. But the effects seem to

> stay in memory.

>

> I wasn't sure where to send bugs, the website led me here. I hope this is

> the right place.

>

> # ----------------------------------------

> import pygame as pg

>

> # init game space

> pg.init()

>

> screen = pg.display.set_mode((600, 400))

> pg.display.set_caption("Ball Moving")

>

> playerX = 50

> playerY = 50

> player_Width = 30

> player_Height = 30

> playerVelocity = 0.5

>

> # Color Constants

> BLUE = (0, 0, 255)

>

> # loop

> running = True

> while running:

>     for event in pg.event.get():

>         if event.type == pg.QUIT:

>             running = False

>

>     # update screen

>     keys = pg.key.get_pressed()

>     if keys[pg.K_LEFT]:

>         playerX -= playerVelocity

>     if keys[pg.K_RIGHT]:

>         playerX += playerVelocity

>     if keys[pg.K_UP]:

>         playerY -= playerVelocity

>     if keys[pg.K_DOWN]:

>         playerY += playerVelocity

>

>     screen.fill(WHITE)

>     pg.draw.circle(screen, (BLUE), (playerX, playerY), player_Width, 0)

>     pg.display.flip()

>

> pg.display.quit()

> pg.quit()

>