DisplayEvents

Demontrates how to handle notifications about display change when programming with ADLX.

Sample Path

/Samples/java/DisplayEvents

Code

Copied!

//
// Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All rights reserved.
//
//-------------------------------------------------------------------------------------------------

import out.*;

public class mainDisplayEvents {

    // load ADLXJavaBind.dll
    static {
        try {
            System.loadLibrary("ADLXJavaBind");
        } catch (UnsatisfiedLinkError e) {
            System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
            System.exit(1);
        }
    }

    // Get displaylistchanged
    public static void main(String[] args) {

        // Initialize ADLX with ADLXHelper
        ADLXHelper help = new ADLXHelper();
        ADLX_RESULT  res = help.Initialize();

        if (res == ADLX_RESULT .ADLX_OK) {

            // Get system services
            IADLXSystem sys = help.GetSystemServices();

            if (sys != null) {
                // Get display services
                SWIGTYPE_p_p_adlx__IADLXDisplayServices s = ADLX.new_displaySerP_Ptr();
                res = sys.GetDisplaysServices(s);
                IADLXDisplayServices displayService = ADLX.displaySerP_Ptr_value(s);

                if (res == ADLX_RESULT .ADLX_OK) {
                    // Get display changed handling
                    SWIGTYPE_p_p_adlx__IADLXDisplayChangedHandling ppDisChangeHand = ADLX.new_displayChangeHandlP_Ptr();
                    res = displayService.GetDisplayChangedHandling(ppDisChangeHand);
                    IADLXDisplayChangedHandling hand = ADLX.displayChangeHandlP_Ptr_value(ppDisChangeHand);

                    if (res == ADLX_RESULT .ADLX_OK) {
                        // Call back for dislaylistchanged
                        DisplayListCallBack call = new DisplayListCallBack();
                        hand.AddDisplayListEventListener(call);
                        System.out.println("\n\n Plug or unplug a display within 20 seconds.\n");
                        try {
                            Thread.currentThread().sleep(20000);
                        } catch (Exception e) {
                            // Exception handling
                        }
                        hand.RemoveDisplayListEventListener(call);

                        // Release display changed handling interface
                        hand.Release();
                    }

                    // Release display services interface
                    displayService.Release();
                }
            }
        } else {
            System.out.printf("ADLX helper initialize result: %s\n", res.toString());
        }

        // ADLX Terminate
        res = help.Terminate();
        System.out.printf("ADLX Terminate: %s\n", res.toString());
    }
}