コード例 #1
0
        public void QueueThreadedDraw(Action <Cairo.Context> drawCallback)
        {
            if (!owner.IsRealized)
            {
                return;
            }

            runningSignal.Wait();

            UpdateScale();

            if (surface == null || surface.Height != TargetHeight || surface.Width != TargetWidth)
            {
                using (var similar = Gdk.CairoHelper.Create(owner.GdkWindow)) {
                    if (surface != null)
                    {
                        surface.Dispose();
                    }
                    surface = new SurfaceWrapper(similar, TargetWidth, TargetHeight);
                }
            }
            runningSignal.Reset();
            this.OnDraw(drawCallback);
            //ThreadPool.QueueUserWorkItem (new WaitCallback (this.OnDraw), drawCallback);
            owner.QueueDraw();
        }