浏览代码

Change QScopedPointer to normal pointer (Windows issues).

Sascha Zelzer 14 年之前
父节点
当前提交
66ad82a202
共有 2 个文件被更改,包括 10 次插入6 次删除
  1. 6 3
      Libs/PluginFramework/ctkPlugin.cpp
  2. 4 3
      Libs/PluginFramework/ctkPlugin.h

+ 6 - 3
Libs/PluginFramework/ctkPlugin.cpp

@@ -30,25 +30,28 @@
 
 
 ctkPlugin::ctkPlugin()
+: d_ptr(0)
 {
 
 }
 
 void ctkPlugin::init(ctkPluginPrivate* dd)
 {
-  d_ptr.reset(dd);
+  if (d_ptr) throw std::logic_error("ctkPlugin already initialized");
+  d_ptr = dd;
 }
 
 void ctkPlugin::init(const QWeakPointer<ctkPlugin>& self,
                      ctkPluginFrameworkContext* fw,
                      ctkPluginArchive* pa)
 {
-  d_ptr.reset(new ctkPluginPrivate(self, fw, pa));
+  if (d_ptr) throw std::logic_error("ctkPlugin already initialized");
+  d_ptr = new ctkPluginPrivate(self, fw, pa);
 }
 
 ctkPlugin::~ctkPlugin()
 {
-
+  delete d_ptr;
 }
 
 ctkPlugin::State ctkPlugin::getState() const

+ 4 - 3
Libs/PluginFramework/ctkPlugin.h

@@ -650,9 +650,10 @@ protected:
   friend class ctkPlugins;
   friend class ctkServiceReferencePrivate;
 
-  QScopedPointer<ctkPluginPrivate> d_ptr;
-
-  Q_DISABLE_COPY(ctkPlugin)
+  // Do NOT change this to QScopedPointer<ctkPluginPrivate>!
+  // We would need to include ctkPlugin.h (and ctkPluginPrivate_p.h)
+  // at a lot of places...
+  ctkPluginPrivate* d_ptr;
 
   ctkPlugin();
   void init(ctkPluginPrivate* dd);