peter9477

Trial patch for laggy scrolling in Qt4.8 blackberry plugin

Jun 20th, 2012
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. Note: this is an attempt at a 4.8 version of https://codereview.qt-project.org/#change,29001,patchset=1 intended for very temporary use only, until that patch is upstreamed and they do their own 4.8 version.
  2. -------------------------------
  3.  
  4. diff --git a/src/plugins/platforms/blackberry/blackberry.pro b/src/plugins/platforms/blackberry/blackberry.pro
  5. index 6fcef85..9d7924c 100644
  6. --- a/src/plugins/platforms/blackberry/blackberry.pro
  7. +++ b/src/plugins/platforms/blackberry/blackberry.pro
  8. @@ -49,6 +49,8 @@ blackberry {
  9.  
  10. HEADERS += qbbbpseventfilter.h \
  11. qbbvirtualkeyboardbps.h
  12. +
  13. + DEFINES += QBB_SCREENEVENTTHREAD
  14. }
  15.  
  16. QMAKE_CXXFLAGS += -I./private
  17. diff --git a/src/plugins/platforms/blackberry/qbbbpseventfilter.cpp b/src/plugins/platforms/blackberry/qbbbpseventfilter.cpp
  18. index a9e8523..42307f7 100644
  19. --- a/src/plugins/platforms/blackberry/qbbbpseventfilter.cpp
  20. +++ b/src/plugins/platforms/blackberry/qbbbpseventfilter.cpp
  21. @@ -96,12 +96,20 @@ void QBBBpsEventFilter::installOnEventDispatcher(QAbstractEventDispatcher *dispa
  22.  
  23. void QBBBpsEventFilter::registerForScreenEvents(QBBScreen *screen)
  24. {
  25. + if (!mScreenEventHandler) {
  26. + qWarning("QBB: trying to register for screen events, but no handler provided.");
  27. + return;
  28. + }
  29. if (screen_request_events(screen->nativeContext()) != BPS_SUCCESS)
  30. qWarning("QBB: failed to register for screen events on screen %p", screen->nativeContext());
  31. }
  32.  
  33. void QBBBpsEventFilter::unregisterForScreenEvents(QBBScreen *screen)
  34. {
  35. + if (!mScreenEventHandler) {
  36. + qWarning("QBB: trying to unregister for screen events, but no handler provided.");
  37. + return;
  38. + }
  39. if (screen_stop_events(screen->nativeContext()) != BPS_SUCCESS)
  40. qWarning("QBB: failed to unregister for screen events on screen %p", screen->nativeContext());
  41. }
  42. @@ -127,6 +135,10 @@ bool QBBBpsEventFilter::bpsEventFilter(bps_event_t *event)
  43. #endif
  44.  
  45. if (eventDomain == screen_get_domain()) {
  46. + if (!mScreenEventHandler) {
  47. + qWarning("QBB: registered for screen events, but no handler provided.");
  48. + return false;
  49. + }
  50. screen_event_t screenEvent = screen_event_get_event(event);
  51. return mScreenEventHandler->handleEvent(screenEvent);
  52. }
  53. diff --git a/src/plugins/platforms/blackberry/qbbintegration.cpp b/src/plugins/platforms/blackberry/qbbintegration.cpp
  54. index bfd1eb8..b84015c 100644
  55. --- a/src/plugins/platforms/blackberry/qbbintegration.cpp
  56. +++ b/src/plugins/platforms/blackberry/qbbintegration.cpp
  57. @@ -121,8 +121,7 @@ QBBIntegration::QBBIntegration() :
  58. createDisplays();
  59.  
  60. // create/start event thread
  61. - // Not on BlackBerry, it has specialised event dispatcher which also handles screen events
  62. -#if !defined(Q_OS_BLACKBERRY)
  63. +#if defined(QBB_SCREENEVENTTHREAD)
  64. mScreenEventThread = new QBBScreenEventThread(mContext, mScreenEventHandler);
  65. mScreenEventThread->start();
  66. #endif
  67. @@ -138,11 +137,14 @@ QBBIntegration::QBBIntegration() :
  68.  
  69. QBBVirtualKeyboardBps *virtualKeyboardBps = new QBBVirtualKeyboardBps;
  70.  
  71. - mBpsEventFilter = new QBBBpsEventFilter(mNavigatorEventHandler, mScreenEventHandler, virtualKeyboardBps);
  72. + mBpsEventFilter = new QBBBpsEventFilter(mNavigatorEventHandler,
  73. + (mScreenEventThread ? 0 : mScreenEventHandler), virtualKeyboardBps);
  74. +#if !defined(QBB_SCREENEVENTTHREAD)
  75. Q_FOREACH (QPlatformScreen *platformScreen, mScreens) {
  76. QBBScreen *screen = static_cast<QBBScreen*>(platformScreen);
  77. mBpsEventFilter->registerForScreenEvents(screen);
  78. }
  79. +#endif
  80.  
  81. mBpsEventFilter->installOnEventDispatcher(QAbstractEventDispatcher::instance());
  82.  
  83. @@ -178,20 +180,20 @@ QBBIntegration::~QBBIntegration()
  84. delete mLocaleThread;
  85. #endif
  86.  
  87. -#if !defined(Q_OS_BLACKBERRY)
  88. - // stop/destroy event thread
  89. - delete mScreenEventThread;
  90. -#endif
  91. -
  92. - // stop/destroy navigator event handling classes
  93. + // stop/destroy navigator event handling classes
  94. delete mNavigatorEventNotifier;
  95.  
  96. -#if defined(Q_OS_BLACKBERRY)
  97. +#if defined(QBB_SCREENEVENTTHREAD)
  98. + // stop/destroy event thread
  99. + delete mScreenEventThread;
  100. +#elif defined(Q_OS_BLACKBERRY)
  101. Q_FOREACH (QPlatformScreen *platformScreen, mScreens) {
  102. QBBScreen *screen = static_cast<QBBScreen*>(platformScreen);
  103. mBpsEventFilter->unregisterForScreenEvents(screen);
  104. }
  105. +#endif
  106.  
  107. +#if defined(Q_OS_BLACKBERRY)
  108. delete mBpsEventFilter;
  109. #endif
Advertisement
Add Comment
Please, Sign In to add comment