diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-06-03 23:06:48 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-05 04:20:47 +0200 |
commit | 71e25920da0dbe8ceea1a60f67e14c3aa403344c (patch) | |
tree | 473a827db7df052ffa8aff623a4bcdd8a7e87e92 /src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp | |
parent | 9219ba76fd32b362dd50b62f71483b2d3f97a1e8 (diff) |
Avoid string-based, dynamic lookup of signals
Qt5 has a new function QMetaMethod::fromSignal() for obtaining
the meta-method that corresponds to a particular signal (member
function).
This also avoids calling the virtual metaObject() function to
resolve the meta-method every time the signal is emitted; it is
known at compile-time which class the signals are defined in,
so it's safe to retain the meta-methods across calls.
Change-Id: I47328ec2dfc335c570fb18bcd304a2ee405bfd6e
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Diffstat (limited to 'src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp')
-rw-r--r-- | src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp b/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp index 38a45a262..050a678a1 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp @@ -443,16 +443,16 @@ static gboolean passImageFilter(GstElement *element, gst_caps_unref(caps); } - static int exposedSignalIndex = session->metaObject()->indexOfSignal("imageExposed(int)"); - session->metaObject()->method(exposedSignalIndex).invoke(session, - Qt::QueuedConnection, - Q_ARG(int,session->m_imageRequestId)); + static QMetaMethod exposedSignal = QMetaMethod::fromSignal(&QGstreamerCaptureSession::imageExposed); + exposedSignal.invoke(session, + Qt::QueuedConnection, + Q_ARG(int,session->m_imageRequestId)); - static int capturedSignalIndex = session->metaObject()->indexOfSignal("imageCaptured(int,QImage)"); - session->metaObject()->method(capturedSignalIndex).invoke(session, - Qt::QueuedConnection, - Q_ARG(int,session->m_imageRequestId), - Q_ARG(QImage,img)); + static QMetaMethod capturedSignal = QMetaMethod::fromSignal(&QGstreamerCaptureSession::imageCaptured); + capturedSignal.invoke(session, + Qt::QueuedConnection, + Q_ARG(int,session->m_imageRequestId), + Q_ARG(QImage,img)); return TRUE; } else { @@ -477,11 +477,11 @@ static gboolean saveImageFilter(GstElement *element, f.write((const char *)buffer->data, buffer->size); f.close(); - static int signalIndex = session->metaObject()->indexOfSignal("imageSaved(int,QString)"); - session->metaObject()->method(signalIndex).invoke(session, - Qt::QueuedConnection, - Q_ARG(int,session->m_imageRequestId), - Q_ARG(QString,fileName)); + static QMetaMethod savedSignal = QMetaMethod::fromSignal(&QGstreamerCaptureSession::imageSaved); + savedSignal.invoke(session, + Qt::QueuedConnection, + Q_ARG(int,session->m_imageRequestId), + Q_ARG(QString,fileName)); } } |