private void DeviceReset()
        {
            logger.Debug("DeviceReset()");
            try
            {
                //if (previewHelper != null)
                //{
                //    Marshal.ReleaseComObject(previewHelper);
                //    previewHelper = null;
                //}

                //device.Reset(presentParameters);


                //if(previewHelper!= null)
                //{
                //    Marshal.ReleaseComObject(previewHelper);
                //    previewHelper = null;
                //}
                //// как закрыть хелпер непонятно, просто пересоздаем его
                //previewHelper = new CDeckLinkDX9ScreenPreviewHelper();// может утекать память !!!!

                CloseD3D();

                // как закрыть хелпер непонятно, просто пересоздаем его
                previewHelper = new CDeckLinkDX9ScreenPreviewHelper();// может утекать память !!!!

                InitD3D();
            }
            catch (Exception ex1)
            {
                logger.Error(ex1);
            }
        }
        public void Init()
        {
            logger.Debug("ScreenPreviewCallback::Init()");

            this.previewHelper = new CDeckLinkDX9ScreenPreviewHelper();


            direct3D          = new Direct3D();
            presentParameters = new PresentParameters();
            presentParameters.BackBufferFormat     = Format.Unknown;
            presentParameters.BackBufferCount      = 2;
            presentParameters.Windowed             = true;
            presentParameters.SwapEffect           = SwapEffect.Discard;
            presentParameters.DeviceWindowHandle   = WindowHandle;
            presentParameters.PresentationInterval = PresentInterval.Default;

            var flags = CreateFlags.HardwareVertexProcessing | CreateFlags.Multithreaded;

            device = new Device(direct3D, 0, DeviceType.Hardware, WindowHandle, flags, presentParameters);

            previewHelper.Initialize(device.NativePointer);
        }
        public void Close()
        {
            logger.Debug("ScreenPreviewCallback::Close()");

            if (direct3D != null)
            {
                direct3D.Dispose();
                direct3D = null;
            }

            if (device != null)
            {
                device.Dispose();
                device = null;
            }

            if (previewHelper != null)
            {
                Marshal.ReleaseComObject(previewHelper);
                previewHelper = null;
            }
        }
Beispiel #4
0
 public PreviewWindow()
 {
     m_previewHelper = new CDeckLinkDX9ScreenPreviewHelper();
     InitializeComponent();
 }