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; } }
public PreviewWindow() { m_previewHelper = new CDeckLinkDX9ScreenPreviewHelper(); InitializeComponent(); }