Skip to content

Commit

Permalink
Date: Tue, 14 Dec 2004 12:08:30 +0100
Browse files Browse the repository at this point in the history
From: Marcin Konicki
Subject: Re: [SDL] SDL 1.2.8 Prerelease

I'm sending small fix for BeOS, which prevents filling up SDL's message
queue too fast.
Without it, SDL receives "key down" messages from BeOS code, for each key
repeat (BeOS handles key repeats itself, and application can check if
received "key down" message from BeOS is first time key down, or if it's
repeat, and which repeat it is). Since there is no way for "sdl driver" to
turn off "default" SDL's key-repeat mechanism, they were working both at
the same time (and queue could be filled up very fast).
So this patch removes handling "key down" message from BeOS if it's
key_repeat "type".
  • Loading branch information
slouken committed Dec 14, 2004
1 parent 4090a51 commit 84335f5
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/video/bwindow/SDL_BWin.h
Expand Up @@ -425,11 +425,13 @@ class SDL_BWin : public BDirectWindow
{
/* mouse up doesn't give which button was released,
only state of buttons (after release, so it's always = 0),
which is is not what we need ;]
which is not what we need ;]
So we need to store button in mouse down, and restore
in mouse up :(
mouse up is (similarly to mouse down) send only when
no more buttons are down */
mouse up is (similarly to mouse down) send only for
first button down (ie. it's no send if we click another button
without releasing previous one first) - but that's probably
because of how drivers are written?, not BeOS itself. */
int32 buttons;
int sdl_buttons = 0;
if (msg->FindInt32("buttons", &buttons) == B_OK) {
Expand Down Expand Up @@ -471,6 +473,11 @@ class SDL_BWin : public BDirectWindow
{
int32 key;
int32 modifiers;
int32 key_repeat;
/* Workaround for SDL message queue being filled too fast because of BeOS own key-repeat mechanism */
if (msg->FindInt32("be:key_repeat", &key_repeat) == B_OK && key_repeat > 0)
break;

if (msg->FindInt32("key", &key) == B_OK && msg->FindInt32("modifiers", &modifiers) == B_OK) {
SDL_keysym keysym;
keysym.scancode = key;
Expand Down

0 comments on commit 84335f5

Please sign in to comment.