src/hbcore/devicedialogbase/hbdevicedialogsym_p.cpp
changeset 30 80e4d18b72f5
parent 28 b7da29130b0e
--- a/src/hbcore/devicedialogbase/hbdevicedialogsym_p.cpp	Fri Sep 17 08:32:10 2010 +0300
+++ b/src/hbcore/devicedialogbase/hbdevicedialogsym_p.cpp	Mon Oct 04 00:38:12 2010 +0300
@@ -80,7 +80,6 @@
     TRACE_ENTRY
     mDeviceDialogFlags = f;
     mLastError = HbDeviceDialogNoError;
-    CActiveScheduler::Add(this);
     iRequesting = EFalse;
     if (mDeviceDialogFlags & HbDeviceDialog::ImmediateResourceReservationFlag) {
         int error = symToDeviceDialogError(initialize());
@@ -95,10 +94,13 @@
     \internal
     Initialisation step. Session to server is created.
 */
-int HbDeviceDialogPrivate::initialize()
+int HbDeviceDialogPrivate::initialize(bool connect)
 {
     TRACE_ENTRY
 
+    if (!IsAdded()) {
+        CActiveScheduler::Add(this);
+    }
     if (!iBuffer) {
         TRAP_IGNORE(iBuffer = HBufC8::NewL(64));
         if (iBuffer) {
@@ -109,7 +111,10 @@
         }
     }
 
-    int error = mHbSession.Connect();
+    int error = KErrNone;
+    if (connect) {
+        mHbSession.Connect();
+    }
         
     TRACE_EXIT_ARGS("error" << error)
     return error;
@@ -123,16 +128,8 @@
 
 int HbDeviceDialogPrivate::connect()
 {
-    if (!iBuffer) {
-        TRAP_IGNORE(iBuffer = HBufC8::NewL(64));
-        if (iBuffer) {
-            iDataPtr.Set(iBuffer->Des());
-        } else {
-          TRACE_EXIT_ARGS("error " << KErrNoMemory)
-            return KErrNoMemory;
-        }
-    }
-    
+    initialize(false);
+
     int error(HbDeviceDialogNoError);
     
     if (!IsActive() && !iConnecting) {