Exemplo n.º 1
0
        public void Dispose_ClearsLocalReferences()
        {
            if (!HaveSafeHandles)
            {
                Assert.Ignore("SafeHandles aren't used, so magical disposal from a distance isn't supported.");
                return;
            }
            JniObjectReference lref;

            using (var envp = new JniTransition(JniEnvironment.EnvironmentPointer)) {
                lref = new JavaObject().PeerReference.NewLocalRef();
                Assert.IsTrue(lref.IsValid);
            }
            Assert.IsFalse(lref.IsValid);
        }
Exemplo n.º 2
0
        static void CalledFromConstructorHandler(IntPtr jnienv, IntPtr n_self, int value)
        {
            var envp = new JniTransition(jnienv);

            try {
                var r_self = new JniObjectReference(n_self);
                var self   = JniEnvironment.Runtime.ValueManager.GetValue <CallVirtualFromConstructorDerived>(ref r_self, JniObjectReferenceOptions.Copy);
                self.CalledFromConstructor(value);
                self.DisposeUnlessReferenced();
            }
            catch (Exception e) when(JniEnvironment.Runtime.ExceptionShouldTransitionToJni(e))
            {
                envp.SetPendingException(e);
            }
            finally {
                envp.Dispose();
            }
        }