Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        internal void BeginHosting(VisualTarget target)
        {
            //
            // This method is executed on the visual target thread.
            //

            Debug.Assert(target != null);
            Debug.Assert(target.Dispatcher.Thread == Thread.CurrentThread);

            using (CompositionEngineLock.Acquire())
            {
                //
                // Check if another target is already hosted by this
                // visual and throw exception if this is the case.
                //
                if (_target != null)
                {
                    throw new InvalidOperationException(
                              SR.Get(SRID.VisualTarget_AnotherTargetAlreadyConnected)
                              );
                }

                _target = target;

                //
                // If HostVisual and VisualTarget on same thread, then call Invalidate
                // directly. Otherwise post invalidate message to the host visual thread
                // indicating that content update is required.
                //
                if (this.CheckAccess())
                {
                    Invalidate();
                }
                else
                {
                    Dispatcher.BeginInvoke(
                        DispatcherPriority.Normal,
                        (DispatcherOperationCallback) delegate(object args)
                    {
                        Invalidate();
                        return(null);
                    },
                        null
                        );
                }
            }
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="hostVisual">host visual</param>
 public VisualTargetPresentationSource(HostVisual hostVisual)
 {
     _visualTarget = new VisualTarget(hostVisual);
     AddSource();
 }
Ejemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        internal void BeginHosting(VisualTarget target)
        {
            //
            // This method is executed on the visual target thread.
            //

            Debug.Assert(target != null);
            Debug.Assert(target.Dispatcher.Thread == Thread.CurrentThread);

            using (CompositionEngineLock.Acquire())
            {
                //
                // Check if another target is already hosted by this
                // visual and throw exception if this is the case.
                //
                if (_target != null)
                {
                    throw new InvalidOperationException(
                        SR.Get(SRID.VisualTarget_AnotherTargetAlreadyConnected)
                        );
                }

                _target = target;

                //
                // If HostVisual and VisualTarget on same thread, then call Invalidate
                // directly. Otherwise post invalidate message to the host visual thread
                // indicating that content update is required.
                //
                if (this.CheckAccess())
                {
                    Invalidate();
                }
                else
                {
                    Dispatcher.BeginInvoke(
                        DispatcherPriority.Normal,
                        (DispatcherOperationCallback)delegate(object args)
                        {
                            Invalidate();
                            return null;
                        },
                        null
                        );
                }
            }
        }
 public VisualTargetPresentationSource(HostVisual theHostVisual)
 {
     myVisualTarget = new VisualTarget(theHostVisual);
 }
Ejemplo n.º 5
0
 public VisualTarget(HostVisual hostVisual)
 {
     _visualTarget = new System.Windows.Media.VisualTarget(hostVisual);
 }