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>
This commit is contained in:
@@ -774,16 +774,16 @@ bool CameraBinSession::processSyncMessage(const QGstreamerMessage &message)
|
|||||||
}
|
}
|
||||||
gst_caps_unref(caps);
|
gst_caps_unref(caps);
|
||||||
|
|
||||||
static int exposedSignalIndex = metaObject()->indexOfSignal("imageExposed(int)");
|
static QMetaMethod exposedSignal = QMetaMethod::fromSignal(&CameraBinSession::imageExposed);
|
||||||
metaObject()->method(exposedSignalIndex).invoke(this,
|
exposedSignal.invoke(this,
|
||||||
Qt::QueuedConnection,
|
Qt::QueuedConnection,
|
||||||
Q_ARG(int,m_requestId));
|
Q_ARG(int,m_requestId));
|
||||||
|
|
||||||
static int signalIndex = metaObject()->indexOfSignal("imageCaptured(int,QImage)");
|
static QMetaMethod capturedSignal = QMetaMethod::fromSignal(&CameraBinSession::imageCaptured);
|
||||||
metaObject()->method(signalIndex).invoke(this,
|
capturedSignal.invoke(this,
|
||||||
Qt::QueuedConnection,
|
Qt::QueuedConnection,
|
||||||
Q_ARG(int,m_requestId),
|
Q_ARG(int,m_requestId),
|
||||||
Q_ARG(QImage,img));
|
Q_ARG(QImage,img));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -443,16 +443,16 @@ static gboolean passImageFilter(GstElement *element,
|
|||||||
gst_caps_unref(caps);
|
gst_caps_unref(caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int exposedSignalIndex = session->metaObject()->indexOfSignal("imageExposed(int)");
|
static QMetaMethod exposedSignal = QMetaMethod::fromSignal(&QGstreamerCaptureSession::imageExposed);
|
||||||
session->metaObject()->method(exposedSignalIndex).invoke(session,
|
exposedSignal.invoke(session,
|
||||||
Qt::QueuedConnection,
|
Qt::QueuedConnection,
|
||||||
Q_ARG(int,session->m_imageRequestId));
|
Q_ARG(int,session->m_imageRequestId));
|
||||||
|
|
||||||
static int capturedSignalIndex = session->metaObject()->indexOfSignal("imageCaptured(int,QImage)");
|
static QMetaMethod capturedSignal = QMetaMethod::fromSignal(&QGstreamerCaptureSession::imageCaptured);
|
||||||
session->metaObject()->method(capturedSignalIndex).invoke(session,
|
capturedSignal.invoke(session,
|
||||||
Qt::QueuedConnection,
|
Qt::QueuedConnection,
|
||||||
Q_ARG(int,session->m_imageRequestId),
|
Q_ARG(int,session->m_imageRequestId),
|
||||||
Q_ARG(QImage,img));
|
Q_ARG(QImage,img));
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
@@ -477,11 +477,11 @@ static gboolean saveImageFilter(GstElement *element,
|
|||||||
f.write((const char *)buffer->data, buffer->size);
|
f.write((const char *)buffer->data, buffer->size);
|
||||||
f.close();
|
f.close();
|
||||||
|
|
||||||
static int signalIndex = session->metaObject()->indexOfSignal("imageSaved(int,QString)");
|
static QMetaMethod savedSignal = QMetaMethod::fromSignal(&QGstreamerCaptureSession::imageSaved);
|
||||||
session->metaObject()->method(signalIndex).invoke(session,
|
savedSignal.invoke(session,
|
||||||
Qt::QueuedConnection,
|
Qt::QueuedConnection,
|
||||||
Q_ARG(int,session->m_imageRequestId),
|
Q_ARG(int,session->m_imageRequestId),
|
||||||
Q_ARG(QString,fileName));
|
Q_ARG(QString,fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user