Bug 1158712 - Odd keyboard event handler behavior (event queue, KEYDOWN event type)
Summary: Odd keyboard event handler behavior (event queue, KEYDOWN event type)
Keywords:
Status: CLOSED EOL
Alias: None
Product: Fedora
Classification: Fedora
Component: pygame
Version: 20
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Jan Kaluža
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-10-30 00:17 UTC by Mikhail
Modified: 2015-06-29 23:05 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2015-06-29 23:05:20 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Mikhail 2014-10-30 00:17:39 UTC
Description of problem:
After testing the Python program with keyboard input (pygame.event module) on 64-bit PC with Fedora 20, odd event queue handling behavior is detected. The KEYDOWN event after a single key press is duplicated automatically which results in duplicated event catch over next loop cycle.     

Version-Release number of selected component (if applicable):
Python 2.7.5 (default in fedora 20) and pygame (installed with 'yum install pygame')

How reproducible:
Always, but the frequency of duplication depends on the FPS of the main loop (the less FPS - the higher is probability of the duplication)

Steps to Reproduce:
1. run the following script:

#----------------------------
import pygame
from pygame.locals import *

value = 0	# output value
w = 600		# window size
h = 400
Box = pygame.Rect(100,100,140,32)
Paper = (191,196,155)	#system colors
Ink   = (49,49,24)

def Status( ):			# this function prints value	
	Caption = Font.render("current value: " + str(value), 1, Ink, Paper) 
	DISP.blit(Caption, Box)	

pygame.init()
DISP = pygame.display.set_mode((w, h))
Font = pygame.font.SysFont("dejavusansmono", 16)
Status( )
ML = True
FPS = 12
clock = pygame.time.Clock( ) 

while ML:
	clock.tick(FPS)
	DISP.fill(Paper)
	for event in pygame.event.get( ):
		if event.type == QUIT:
			ML = False
		if event.type == KEYDOWN:
			if event.key == K_ESCAPE:
				ML = False
			if event.key == K_a:
				value = value + 1
			if event.key == K_z:
				value = value - 1
	Status()
	pygame.display.flip( )

pygame.quit( )

#--------------------

2. Use 'a' and 'z' keys to increase/decrease the value, (press and release the key immediately).
3. Observe the value changed. 

Actual results:
The value increases by 1 and sometimes by 2. 

Expected results:
The value must increase only by 1.

Additional info:
Same script tested on 32bit Fedora and 64-bit Windows 7, no bugs were detected.

Comment 1 Jan Kaluža 2014-11-04 11:08:13 UTC
I'm not able to reproduce it on F20 64bit. Can you please double-check that you really see that issue?

Comment 2 Mikhail 2014-11-04 20:46:45 UTC
(In reply to Jan Kaluža from comment #1)
> I'm not able to reproduce it on F20 64bit. Can you please double-check that
> you really see that issue?

Thanks for reply. I'm 100% sure for my particular PC, unfortunately I have no other F20 64-bit PC at the moment, to check with. It can be that the issue lies on my personal OS/PC, then it's just bad luck for me. Still it's strange, I see no problems with other fedora (non-pygame) apps, so it is not a hardware problem probably. 
So my pygame.version.ver returns '1.9.1.release' and was installed from repo,  python is 2.7.5, so I didn't use anything non-standart.
I can say also, if I set the FPS value to small value, say 2 for example, the duplicating happens almost at every keypress. Also if I press a key and hold it for a while before releasing, the error does not occur. 
So i will try to find another pc to test with, or try other keyboard.
Sorry if it turns out to be false report, but it happens really to me and it's frustrating, since it stalls the whole project I am working on now.

Comment 3 Fedora End Of Life 2015-05-29 13:11:15 UTC
This message is a reminder that Fedora 20 is nearing its end of life.
Approximately 4 (four) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 20. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as EOL if it remains open with a Fedora  'version'
of '20'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 20 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 4 Fedora End Of Life 2015-06-29 23:05:20 UTC
Fedora 20 changed to end-of-life (EOL) status on 2015-06-23. Fedora 20 is
no longer maintained, which means that it will not receive any further
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version. If you
are unable to reopen this bug, please file a new report against the
current release. If you experience problems, please add a comment to this
bug.

Thank you for reporting this bug and we are sorry it could not be fixed.


Note You need to log in before you can comment on or make changes to this bug.