DirectShow мерцает окно с выводом видео

Здравствуйте.
Изначально, когда видео отрендерено, выполняется это:

        public bool ConfigureVideoOutput()
        {
            if (OutputWindow == null || videoWindow == null || basicVideo == null || 
                basicVideo.GetVideoSize(out int w, out int h) != S_OK)
            {
                return false;
            }

            videoWindow.put_Owner(OutputWindow.Handle);
            videoWindow.put_MessageDrain(OutputWindow.Handle);
            videoWindow.put_WindowStyle(WindowStyle.Child | WindowStyle.ClipChildren | WindowStyle.ClipSiblings);

            _videoWidth = w;
            _videoHeight = h;

            Rectangle r = CenterRect(ResizeRect(new Rectangle(0, 0, _videoWidth, _videoHeight), OutputWindow.Size), OutputWindow.ClientRectangle);
            SetScreenRect(r);
            videoWindow.put_Visible(OABool.True);

            return true;
        }

а при ресайзе это:

        public void ResizeOutputWindow()
        {
            panelVideoScreen.Top = lblTitleBar.Visible ? lblTitleBar.Height : 0;
            panelVideoScreen.Height = panelControls.Visible ? panelControls.Top - panelVideoScreen.Top : Height - panelVideoScreen.Top;
            if (State != PLAYER_STATE.Null)
            {
                PlayerEngine.ConfigureVideoOutput();
            }
        }

        public void SetScreenRect(Rectangle rectangle)
        {
            if (videoWindow != null)
            {
                videoWindow.SetWindowPosition(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);
                _outputScreenRect = rectangle;
            }
            else
            {
                _outputScreenRect = new Rectangle(0, 0, 0, 0);
            }
        }

Проблема в том, что панель перерисовывается полностью и получается мерцание. Можно в обработчике события Paint заливать только нужный регион. Но как отменить стандартную отрисовку, которая делается еще до прихода события?
Просто оставить пустым?

protected override void OnPaint(PaintEventArgs e)
{

}

p.s. Да, код кривоват. Надо фиксить. Но мерцание возникает из-за перерисовки панели.

Чёрт! Опять лохонулся, поторописька.
Вот так надо:

        public void ResizeOutputWindow()
        {
            panelVideoScreen.Top = lblTitleBar.Visible ? lblTitleBar.Height : 0;
            panelVideoScreen.Height = panelControls.Visible ? panelControls.Top - panelVideoScreen.Top : Height - panelVideoScreen.Top;
            if (State != PLAYER_STATE.Null)
            {
                Size size = PlayerEngine.VideoSize;
                Rectangle videoRect = new Rectangle(0, 0, size.Width, size.Height);
                Rectangle r = CenterRect(ResizeRect(videoRect, panelVideoScreen.ClientSize), panelVideoScreen.ClientRectangle);
                PlayerEngine.SetScreenRect(r);
            }
        }

Нет мерцаний.
Видимо, я когда-то (несколько дней назад) нажал ctrl+z и оно отменилось, а я не заметил и сохранил. Заметил только вот сейчас.
Лошара же :man_shrugging:

Вот поэтому все и используют системы типа Git, чтобы в диффе при создании коммита увидеть случайные изменения и отменить :kolobokbatya: