VirtualBox

Changeset 29212 in vbox for trunk/src


Ignore:
Timestamp:
May 7, 2010 1:31:09 PM (15 years ago)
Author:
vboxsync
Message:

java bridge: better proxy lifetime, callbacks work, but JVM crash later

Location:
trunk/src/libs/xpcom18a4/java
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/libs/xpcom18a4/java/src/nsJavaXPCOMBindingUtils.cpp

    r29140 r29212  
    926926GetJNIEnv()
    927927{
    928   JNIEnv* env;
     928  JNIEnv* env = nsnull;
    929929  jint rc = gCachedJVM->GetEnv((void**) &env, JNI_VERSION_1_2);
     930#ifdef VBOX
     931  if (env == nsnull)
     932  {
     933      rc = gCachedJVM->AttachCurrentThreadAsDaemon((void**)&env, nsnull);
     934      printf("attaching\n");
     935  }
     936#endif
    930937  NS_ASSERTION(rc == JNI_OK && env != nsnull,
    931938               "Current thread not attached to given JVM instance");
  • trunk/src/libs/xpcom18a4/java/src/nsJavaXPCOMGlue.cpp

    r29185 r29212  
    128128    nsIXPTCProxy*              mOuter;
    129129  public:
    130     NS_DECL_ISUPPORTS
     130    NS_DECL_ISUPPORTS_INHERITED
    131131
    132132    nsXPTCJStub(REFNSIID aIID, nsIXPTCProxy* aOuter, nsIInterfaceInfo* ii)
     
    141141    {
    142142        //if (mOuter)
    143         //    mOuter->Release();
     143        //  mOuter->Release();
    144144    }
    145145
     
    158158};
    159159
    160 NS_IMPL_ADDREF(nsXPTCJStub)
    161 NS_IMPL_RELEASE(nsXPTCJStub)
     160NS_IMETHODIMP_(nsrefcnt)
     161nsXPTCJStub::AddRef()
     162{
     163    return mOuter->AddRef();
     164}
     165
     166NS_IMETHODIMP_(nsrefcnt)
     167nsXPTCJStub::Release()
     168{
     169    return mOuter->Release();
     170}
    162171
    163172NS_IMETHODIMP nsXPTCJStub::QueryInterface(REFNSIID aIID, void** aInstancePtr)
    164173{
     174    nsIID* mIID;
     175    mII->GetInterfaceIID(&mIID);
     176
     177    if (mIID->Equals(aIID)) {
     178        NS_ADDREF_THIS();
     179        *aInstancePtr = static_cast<nsISupports*>(this);
     180        return NS_OK;
     181    }
     182
    165183    return mOuter->QueryInterface(aIID, aInstancePtr);
    166184}
     
    197215    if (!newbase)
    198216        return NS_ERROR_OUT_OF_MEMORY;
    199 
    200217    *aResult = newbase;
    201218#endif
  • trunk/src/libs/xpcom18a4/java/src/org/virtualbox/VirtualBoxManager.java

    r29185 r29212  
    111111        progressBar(p, timeout);
    112112        session.close();
    113 
    114113        return true;
    115114    }
  • trunk/src/libs/xpcom18a4/java/tests/TestVBox.java

    r29186 r29212  
    6868            }
    6969
    70             VBoxCallbacks vboxCallbacks = new VBoxCallbacks();
    71             vbox.registerCallback(mgr.makeVirtualBoxCallback(vboxCallbacks));
     70            boolean withCallbacks = false;
     71            VBoxCallbacks vboxCallbacks = null;
     72
     73            if (withCallbacks)
     74            {
     75                vboxCallbacks = new VBoxCallbacks();
     76                vbox.registerCallback(mgr.makeVirtualBoxCallback(vboxCallbacks));
     77            }
    7278
    7379            /* do something silly, start the first VM in the list */
    7480            String m = machs[0].getName();
    7581            System.out.println("\nAttempting to start VM '" + m + "'");
    76             if (mgr.startVm(m, 7000))
     82            if (false || mgr.startVm(m, 7000))
    7783            {
    78                 if (false)
     84                if (!withCallbacks)
    7985                {
    8086                    System.out.println("started, presss any key...");
     
    9298            }
    9399
    94             vbox.unregisterCallback(vboxCallbacks);
     100            if (withCallbacks)
     101                vbox.unregisterCallback(vboxCallbacks);
    95102        }
    96103        catch (Throwable e)
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette