jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuComponent.m
changeset 43204 4358b67f2e5a
parent 26751 70bac69b37c9
equal deleted inserted replaced
43203:955e87b8f623 43204:4358b67f2e5a
     1 /*
     1 /*
     2  * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    39         fPeer = peer;
    39         fPeer = peer;
    40     }
    40     }
    41     return self;
    41     return self;
    42 }
    42 }
    43 
    43 
    44 -(void) cleanup {
    44 - (void)dealloc {
    45     // Used by subclasses
       
    46 }
       
    47 
       
    48 -(void) disposer {
       
    49     JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
    45     JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
    50     JNFDeleteGlobalRef(env, fPeer);
    46     JNFDeleteGlobalRef(env, fPeer);
    51     fPeer = NULL;
    47     fPeer = NULL;
    52 
    48 
    53     [self cleanup];
    49     [super dealloc];
    54     [self release];
       
    55 }
    50 }
    56 
       
    57 // The method is used by all subclasses, since the process of the creation
       
    58 // is the same. The only exception is the CMenuItem class.
       
    59 - (void) _create_OnAppKitThread: (NSMutableArray *)argValue {
       
    60     jobject cPeerObjGlobal = (jobject)[[argValue objectAtIndex: 0] pointerValue];
       
    61     CMenuItem *aCMenuItem = [self initWithPeer:cPeerObjGlobal];
       
    62     [argValue removeAllObjects];
       
    63     [argValue addObject: aCMenuItem];
       
    64 }
       
    65 
       
    66 @end
    51 @end
    67 
       
    68 /*
       
    69  * Class:     sun_lwawt_macosx_CMenuComponent
       
    70  * Method:    nativeDispose
       
    71  * Signature: (J)V
       
    72  */
       
    73 JNIEXPORT void JNICALL
       
    74 Java_sun_lwawt_macosx_CMenuComponent_nativeDispose
       
    75 (JNIEnv *env, jobject peer, jlong menuItemObj)
       
    76 {
       
    77 JNF_COCOA_ENTER(env);
       
    78 
       
    79     [ThreadUtilities performOnMainThread:@selector(disposer)
       
    80                                       on:((id)jlong_to_ptr(menuItemObj))
       
    81                               withObject:nil
       
    82                            waitUntilDone:NO];
       
    83 
       
    84 JNF_COCOA_EXIT(env);
       
    85 }