From e8687c2cd0640ab635ed53a7b951baa9615a2932 Mon Sep 17 00:00:00 2001 From: Andreas Pokorny Date: Thu, 25 Jun 2015 01:08:44 +0200 Subject: changes needed for 0.14.0 release --- src/common/debughelpers.h | 2 +- src/modules/Unity/Application/mirsurfaceitem.cpp | 31 ++++++++++++------------ src/platforms/mirserver/qteventfeeder.cpp | 17 +++---------- src/platforms/mirserver/qteventfeeder.h | 4 +-- 4 files changed, 22 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/common/debughelpers.h b/src/common/debughelpers.h index 7990598..d4e5253 100644 --- a/src/common/debughelpers.h +++ b/src/common/debughelpers.h @@ -20,7 +20,7 @@ #include #include -#include +#include class QTouchEvent; diff --git a/src/modules/Unity/Application/mirsurfaceitem.cpp b/src/modules/Unity/Application/mirsurfaceitem.cpp index c8d895a..2739e4c 100644 --- a/src/modules/Unity/Application/mirsurfaceitem.cpp +++ b/src/modules/Unity/Application/mirsurfaceitem.cpp @@ -73,16 +73,16 @@ getMirModifiersFromQt(Qt::KeyboardModifiers mods) mir::EventUPtr makeMirEvent(QMouseEvent *qtEvent, MirPointerAction action) { - auto timestamp = qtEvent->timestamp() * 1000000; + auto timestamp = std::chrono::milliseconds(qtEvent->timestamp()); auto modifiers = getMirModifiersFromQt(qtEvent->modifiers()); - std::vector buttons; + MirPointerButtons buttons = 0; if (qtEvent->buttons() & Qt::LeftButton) - buttons.push_back(mir_pointer_button_primary); + buttons |= mir_pointer_button_primary; if (qtEvent->buttons() & Qt::RightButton) - buttons.push_back(mir_pointer_button_secondary); + buttons |= mir_pointer_button_secondary; if (qtEvent->buttons() & Qt::MidButton) - buttons.push_back(mir_pointer_button_tertiary); + buttons |= mir_pointer_button_tertiary; return mir::events::make_event(0 /*DeviceID */, timestamp, modifiers, action, buttons, qtEvent->x(), qtEvent->y(), 0, 0); @@ -90,9 +90,9 @@ mir::EventUPtr makeMirEvent(QMouseEvent *qtEvent, MirPointerAction action) mir::EventUPtr makeMirEvent(QHoverEvent *qtEvent, MirPointerAction action) { - auto timestamp = qtEvent->timestamp() * 1000000; + auto timestamp = std::chrono::milliseconds(qtEvent->timestamp()); - std::vector buttons; + MirPointerButtons buttons = 0; return mir::events::make_event(0 /*DeviceID */, timestamp, mir_input_event_modifier_none, action, buttons, qtEvent->posF().x(), qtEvent->posF().y(), 0, 0); @@ -115,7 +115,7 @@ mir::EventUPtr makeMirEvent(QKeyEvent *qtEvent) if (qtEvent->isAutoRepeat()) action = mir_keyboard_action_repeat; - return mir::events::make_event(0 /* DeviceID */, qtEvent->timestamp() * 1000000, + return mir::events::make_event(0 /* DeviceID */, std::chrono::milliseconds(qtEvent->timestamp()), action, qtEvent->nativeVirtualKey(), qtEvent->nativeScanCode(), qtEvent->nativeModifiers()); @@ -127,7 +127,7 @@ mir::EventUPtr makeMirEvent(Qt::KeyboardModifiers qmods, ulong qtTimestamp) { auto modifiers = getMirModifiersFromQt(qmods); - auto ev = mir::events::make_event(0, static_cast(qtTimestamp) * 1000000, + auto ev = mir::events::make_event(0, std::chrono::milliseconds(qtTimestamp), modifiers); for (int i = 0; i < qtTouchPoints.count(); ++i) { @@ -388,17 +388,16 @@ bool MirSurfaceItem::updateTexture() // called by rendering thread (scene gra bool textureUpdated = false; const void* const userId = (void*)123; - std::unique_ptr renderable = - m_surface->compositor_snapshot(userId); + auto renderables = m_surface->generate_renderables(userId); - if (m_surface->buffers_ready_for_compositor(userId) > 0) { + if (m_surface->buffers_ready_for_compositor(userId) > 0 && renderables.size() > 0) { if (!m_textureProvider->t) { - m_textureProvider->t = new MirBufferSGTexture(renderable->buffer()); + m_textureProvider->t = new MirBufferSGTexture(renderables[0]->buffer()); } else { // Avoid holding two buffers for the compositor at the same time. Thus free the current // before acquiring the next m_textureProvider->t->freeBuffer(); - m_textureProvider->t->setBuffer(renderable->buffer()); + m_textureProvider->t->setBuffer(renderables[0]->buffer()); } textureUpdated = true; } @@ -746,7 +745,9 @@ void MirSurfaceItem::dropPendingBuffers() // The line below looks like an innocent, effect-less, getter. But as this // method returns a unique_pointer, not holding its reference causes the // buffer to be destroyed/released straight away. - m_surface->compositor_snapshot(userId)->buffer(); + //m_surface->compositor_snapshot(userId)->buffer(); + for (auto const & item : m_surface->generate_renderables(userId)) + item->buffer(); qCDebug(QTMIR_SURFACES) << "MirSurfaceItem::dropPendingBuffers()" << "surface =" << this << "buffer dropped." diff --git a/src/platforms/mirserver/qteventfeeder.cpp b/src/platforms/mirserver/qteventfeeder.cpp index 6c6dfa6..5490096 100644 --- a/src/platforms/mirserver/qteventfeeder.cpp +++ b/src/platforms/mirserver/qteventfeeder.cpp @@ -219,11 +219,11 @@ QtEventFeeder::~QtEventFeeder() delete mQtWindowSystem; } -void QtEventFeeder::dispatch(MirEvent const& event) +bool QtEventFeeder::dispatch(MirEvent const& event) { auto type = mir_event_get_type(&event); if (type != mir_event_type_input) - return; + return false; auto iev = mir_event_get_input_event(&event); switch (mir_input_event_get_type(iev)) { @@ -238,6 +238,8 @@ void QtEventFeeder::dispatch(MirEvent const& event) default: break; } + + return true; } namespace @@ -423,17 +425,6 @@ void QtEventFeeder::stop() // not used } -void QtEventFeeder::configuration_changed(std::chrono::nanoseconds when) -{ - Q_UNUSED(when); -} - -void QtEventFeeder::device_reset(int32_t device_id, std::chrono::nanoseconds when) -{ - Q_UNUSED(device_id); - Q_UNUSED(when); -} - void QtEventFeeder::validateTouches(ulong timestamp, QList &touchPoints) { diff --git a/src/platforms/mirserver/qteventfeeder.h b/src/platforms/mirserver/qteventfeeder.h index 48113bf..d786715 100644 --- a/src/platforms/mirserver/qteventfeeder.h +++ b/src/platforms/mirserver/qteventfeeder.h @@ -61,9 +61,7 @@ public: static const int MirEventActionPointerIndexMask; static const int MirEventActionPointerIndexShift; - void configuration_changed(std::chrono::nanoseconds when) override; - void device_reset(int32_t device_id, std::chrono::nanoseconds when) override; - void dispatch(MirEvent const& event) override; + bool dispatch(MirEvent const& event) override; void start() override; void stop() override; -- cgit v1.2.3