summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/kernel/qjniobject.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/corelib/kernel/qjniobject.h b/src/corelib/kernel/qjniobject.h
index 3a02c0e31e..589f6489f7 100644
--- a/src/corelib/kernel/qjniobject.h
+++ b/src/corelib/kernel/qjniobject.h
@@ -71,12 +71,17 @@ public:
#endif
>
explicit QJniObject(const char *className, Args &&...args)
- : QJniObject(Qt::Uninitialized)
+ : QJniObject(LocalFrame<Args...>{}, className, std::forward<Args>(args)...)
{
- LocalFrame<Args...> localFrame;
- *this = QJniObject(className, QtJniTypes::constructorSignature<Args...>().data(),
- localFrame.convertToJni(std::forward<Args>(args))...);
}
+private:
+ template<typename ...Args>
+ explicit QJniObject(LocalFrame<Args...> localFrame, const char *className, Args &&...args)
+ : QJniObject(className, QtJniTypes::constructorSignature<Args...>().data(),
+ localFrame.convertToJni(std::forward<Args>(args))...)
+ {
+ }
+public:
explicit QJniObject(jclass clazz);
explicit QJniObject(jclass clazz, const char *signature, ...);
template<typename ...Args