~mir-team/qtmir/mir-0.16-rebuild

« back to all changes in this revision

Viewing changes to src/modules/Unity/Application/mirsurfaceitem.cpp

  • Committer: Alan Griffiths
  • Date: 2015-07-29 11:33:48 UTC
  • mfrom: (347 qtmir)
  • mto: This revision was merged to the branch mainline in revision 355.
  • Revision ID: alan@octopull.co.uk-20150729113348-qot92li275wru8e1
mergeĀ lp:qtmir

Show diffs side-by-side

added added

removed removed

Lines of Context:
73
73
 
74
74
mir::EventUPtr makeMirEvent(QMouseEvent *qtEvent, MirPointerAction action)
75
75
{
76
 
    auto timestamp = qtEvent->timestamp() * 1000000;
 
76
    auto timestamp = std::chrono::milliseconds(qtEvent->timestamp());
77
77
    auto modifiers = getMirModifiersFromQt(qtEvent->modifiers());
78
78
 
79
 
    std::vector<MirPointerButton> buttons;
 
79
    MirPointerButtons buttons = 0;
80
80
    if (qtEvent->buttons() & Qt::LeftButton)
81
 
        buttons.push_back(mir_pointer_button_primary);
 
81
        buttons |= mir_pointer_button_primary;
82
82
    if (qtEvent->buttons() & Qt::RightButton)
83
 
        buttons.push_back(mir_pointer_button_secondary);
 
83
        buttons |= mir_pointer_button_secondary;
84
84
    if (qtEvent->buttons() & Qt::MidButton)
85
 
        buttons.push_back(mir_pointer_button_tertiary);
 
85
        buttons |= mir_pointer_button_tertiary;
86
86
 
87
87
    return mir::events::make_event(0 /*DeviceID */, timestamp, modifiers, action,
88
88
                                   buttons, qtEvent->x(), qtEvent->y(), 0, 0);
90
90
 
91
91
mir::EventUPtr makeMirEvent(QHoverEvent *qtEvent, MirPointerAction action)
92
92
{
93
 
    auto timestamp = qtEvent->timestamp() * 1000000;
 
93
    auto timestamp = std::chrono::milliseconds(qtEvent->timestamp());
94
94
 
95
 
    std::vector<MirPointerButton> buttons;
 
95
    MirPointerButtons buttons = 0;
96
96
 
97
97
    return mir::events::make_event(0 /*DeviceID */, timestamp, mir_input_event_modifier_none, action,
98
98
                                   buttons, qtEvent->posF().x(), qtEvent->posF().y(), 0, 0);
115
115
    if (qtEvent->isAutoRepeat())
116
116
        action = mir_keyboard_action_repeat;
117
117
 
118
 
    return mir::events::make_event(0 /* DeviceID */, qtEvent->timestamp() * 1000000,
 
118
    return mir::events::make_event(0 /* DeviceID */, std::chrono::milliseconds(qtEvent->timestamp()),
119
119
                           action, qtEvent->nativeVirtualKey(),
120
120
                           qtEvent->nativeScanCode(),
121
121
                           qtEvent->nativeModifiers());
127
127
                            ulong qtTimestamp)
128
128
{
129
129
    auto modifiers = getMirModifiersFromQt(qmods);
130
 
    auto ev = mir::events::make_event(0, static_cast<int64_t>(qtTimestamp) * 1000000,
 
130
    auto ev = mir::events::make_event(0, std::chrono::milliseconds(qtTimestamp),
131
131
                                      modifiers);
132
132
 
133
133
    for (int i = 0; i < qtTouchPoints.count(); ++i) {
388
388
    bool textureUpdated = false;
389
389
 
390
390
    const void* const userId = (void*)123;
391
 
    std::unique_ptr<mg::Renderable> renderable =
392
 
        m_surface->compositor_snapshot(userId);
 
391
    auto renderables = m_surface->generate_renderables(userId);
393
392
 
394
 
    if (m_surface->buffers_ready_for_compositor(userId) > 0) {
 
393
    if (m_surface->buffers_ready_for_compositor(userId) > 0 && renderables.size() > 0) {
395
394
        if (!m_textureProvider->t) {
396
 
            m_textureProvider->t = new MirBufferSGTexture(renderable->buffer());
 
395
            m_textureProvider->t = new MirBufferSGTexture(renderables[0]->buffer());
397
396
        } else {
398
397
            // Avoid holding two buffers for the compositor at the same time. Thus free the current
399
398
            // before acquiring the next
400
399
            m_textureProvider->t->freeBuffer();
401
 
            m_textureProvider->t->setBuffer(renderable->buffer());
 
400
            m_textureProvider->t->setBuffer(renderables[0]->buffer());
402
401
        }
403
402
        textureUpdated = true;
404
403
    }
746
745
        // The line below looks like an innocent, effect-less, getter. But as this
747
746
        // method returns a unique_pointer, not holding its reference causes the
748
747
        // buffer to be destroyed/released straight away.
749
 
        m_surface->compositor_snapshot(userId)->buffer();
 
748
        for (auto const & item : m_surface->generate_renderables(userId))
 
749
            item->buffer();
750
750
        qCDebug(QTMIR_SURFACES) << "MirSurfaceItem::dropPendingBuffers()"
751
751
            << "surface =" << this
752
752
            << "buffer dropped."