From 70f6d9c36cb9042eb8532a3f42636c7f78aa7e80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Wed, 19 Mar 2008 18:13:22 +0000 Subject: [PATCH] Keeping a QTimer around rather than using QTimer::singleShot() is more efficient, gives 1295->1320fps improvement with glxgears. svn path=/trunk/KDE/kdebase/workspace/; revision=787722 --- workspace.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/workspace.cpp b/workspace.cpp index e4b5a5734f..014fd6437f 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -2598,6 +2598,7 @@ void Workspace::slotBlockShortcuts( int data ) static QPoint last_cursor_pos; static int last_buttons = 0; static Time last_cursor_timestamp = CurrentTime; +static QTimer* last_cursor_timer; QPoint Workspace::cursorPos() const { @@ -2613,7 +2614,14 @@ QPoint Workspace::cursorPos() const &root_x, &root_y, &win_x, &win_y, &state ); last_cursor_pos = QPoint( root_x, root_y ); last_buttons = state; - QTimer::singleShot( 0, const_cast< Workspace* >( this ), SLOT( resetCursorPosTime())); + if( last_cursor_timer == NULL ) + { + Workspace* ws = const_cast< Workspace* >( this ); + last_cursor_timer = new QTimer( ws ); + last_cursor_timer->setSingleShot( true ); + connect( last_cursor_timer, SIGNAL( timeout()), ws, SLOT( resetCursorPosTime())); + } + last_cursor_timer->start( 0 ); } return last_cursor_pos; }