diff generator/cppimplgenerator.cpp @ 301:4d8481385c71 signals

windows fix
author eldar
date Tue, 08 Dec 2009 21:13:24 +0000
parents adae77fdc1ea
children 98b211f3ee34
line wrap: on
line diff
--- a/generator/cppimplgenerator.cpp	Sun Dec 06 22:21:22 2009 +0000
+++ b/generator/cppimplgenerator.cpp	Tue Dec 08 21:13:24 2009 +0000
@@ -505,13 +505,9 @@
                  "(pf" << function->marshalledName() << "_dispatch) virts[" << pos << "];" << endl;
         }
     }
-
     // D-side signal callbacks
-    AbstractMetaFunctionList signal_funcs = signalFunctions(java_class);
-    for(int i = 0; i < signal_funcs.size(); i++)
-        s << "    emit_callbacks_" << java_class->name() << "[" << i << "] = (EmitCallback)"
-             "sigs[" << i << "];" << endl;
-
+    if (java_class->isQObject())
+        s << "    qtd_" << java_class->name() << "_qt_metacall_dispatch = (QtMetacallCallback)sigs[0];" << endl;
     s << "}" << endl;
 }
 
@@ -1353,9 +1349,12 @@
       << "}" << endl << endl;
       */
 
-    s << "extern \"C\" int qtd_" << java_class->name() << "_qt_metacall_dispatch(void *d_entity, QMetaObject::Call _c, int _id, void **_a);" << endl << endl
-
-      << "int " << shellClassName(java_class) << "::qt_metacall(QMetaObject::Call _c, int _id, void **_a)" << endl
+    if(cpp_shared)
+        s << "QtMetacallCallback qtd_" << java_class->name() << "_qt_metacall_dispatch;" << endl;
+    else
+        s << "extern \"C\" int qtd_" << java_class->name() << "_qt_metacall_dispatch(void *d_entity, QMetaObject::Call _c, int _id, void **_a);" << endl << endl;
+
+    s << "int " << shellClassName(java_class) << "::qt_metacall(QMetaObject::Call _c, int _id, void **_a)" << endl
       << "{" << endl
       << "    return qtd_" << java_class->name() << "_qt_metacall_dispatch(this->dId, _c, _id, _a);" << endl
       << "}" << endl << endl