Exemplo n.º 1
0
        public override IEnumerable <DebugAllocationData> Run()
        {
            if (!isInitialized)
            {
                var input = StartupInput.GetDefault();
                GdiplusStartup(out initToken, ref input, out var output);
                AppDomain.CurrentDomain.ProcessExit += (sender, e) =>
                {
                    GdiplusShutdown(new HandleRef(null, initToken));
                };
                isInitialized = true;
            }

            for (int i = 0; i < 10; i++)
            {
                long beforeAlloc = Environment.WorkingSet;

                BitmapImage image = new BitmapImage(FilePath);

                long afterAlloc = Environment.WorkingSet;

                long afterDispose = Environment.WorkingSet;

                yield return(new DebugAllocationData(beforeAlloc, afterAlloc, afterDispose));
            }
        }
Exemplo n.º 2
0
 public static StartupInput GetDefaultStartupInput()
 {
   StartupInput result = new StartupInput();
   result.GdiplusVersion = 1;
   result.SuppressBackgroundThread = false;
   result.SuppressExternalCodecs = false;
   return result;
 }
Exemplo n.º 3
0
    public static StartupInput GetDefaultStartupInput()
    {
        StartupInput result = new StartupInput();

        result.GdiplusVersion           = 1;
        result.SuppressBackgroundThread = false;
        result.SuppressExternalCodecs   = false;
        return(result);
    }
Exemplo n.º 4
0
            public bool   SuppressExternalCodecs;     // FALSE unless you want GDI+ only to use
                                                      // its internal image codecs.

            public static StartupInput GetDefault()
            {
                StartupInput result = new StartupInput();

                result.GdiplusVersion = 1;
                // result.DebugEventCallback = null;
                result.SuppressBackgroundThread = false;
                result.SuppressExternalCodecs   = false;
                return(result);
            }
Exemplo n.º 5
0
                public static StartupInput GetDefault()
                {
                    var result = new StartupInput
                    {
                        GdiplusVersion           = 1,
                        SuppressBackgroundThread = false,
                        SuppressExternalCodecs   = false
                    };

                    return(result);
                }
Exemplo n.º 6
0
            static Gdip()
            {
                Debug.Assert(s_initToken == IntPtr.Zero, "GdiplusInitialization: Initialize should not be called more than once in the same domain!");

                PlatformInitialize();

                StartupInput input = StartupInput.GetDefault();

                // GDI+ ref counts multiple calls to Startup in the same process, so calls from multiple
                // domains are ok, just make sure to pair each w/GdiplusShutdown
                int status = GdiplusStartup(out s_initToken, ref input, out StartupOutput output);

                CheckStatus(status);
            }
Exemplo n.º 7
0
        static ImageFast()
        {
            if (gdipToken == IntPtr.Zero)
            {
                StartupInput  input = StartupInput.GetDefaultStartupInput();
                StartupOutput output;

                int status = GdiplusStartup(out gdipToken, ref input, out output);
                if (status == 0)
                {
                    AppDomain.CurrentDomain.ProcessExit += new EventHandler(Cleanup_Gdiplus);
                }
            }
        }
Exemplo n.º 8
0
            static Gdip()
            {
                Debug.Assert(s_initToken == IntPtr.Zero, "GdiplusInitialization: Initialize should not be called more than once in the same domain!");
                Debug.WriteLineIf(s_gdiPlusInitialization.TraceVerbose, "Initialize GDI+ [" + AppDomain.CurrentDomain.FriendlyName + "]");
                Debug.Indent();

                PlatformInitialize();

                StartupInput input = StartupInput.GetDefault();

                // GDI+ ref counts multiple calls to Startup in the same process, so calls from multiple
                // domains are ok, just make sure to pair each w/GdiplusShutdown
                int status = GdiplusStartup(out s_initToken, ref input, out StartupOutput output);

                CheckStatus(status);

                Debug.Unindent();
            }
Exemplo n.º 9
0
            private static void Initialize()
            {
                var input = StartupInput.GetDefault();

                var status = GdiplusStartup(out InitToken, ref input, out _);

                if (status != Ok)
                {
                    throw StatusException(status);
                }

                var currentDomain = AppDomain.CurrentDomain;

                currentDomain.ProcessExit += OnProcessExit;

                if (!currentDomain.IsDefaultAppDomain())
                {
                    currentDomain.DomainUnload += OnProcessExit;
                }
            }
Exemplo n.º 10
0
    static ImageFast()
    {
#if DEBUG
        Console.WriteLine("Initializing GDI+");
#endif
        if (gdipToken == IntPtr.Zero)
        {
            StartupInput  input = StartupInput.GetDefaultStartupInput();
            StartupOutput output;

            int status = GdiplusStartup(out gdipToken, ref input, out output);
#if DEBUG
            if (status == 0)
            {
                Console.WriteLine("Initializing GDI+ completed successfully");
            }
#endif
            if (status == 0)
            {
                AppDomain.CurrentDomain.ProcessExit += new EventHandler(Cleanup_Gdiplus);
            }
        }
    }
 private static extern int GdiplusStartup(out IntPtr token, ref StartupInput input, out StartupOutput output);
Exemplo n.º 12
0
 public static extern Status GdiplusStartup(out IntPtr token, StartupInput input, out StartupOutput output);
Exemplo n.º 13
0
 private static extern int GdiplusStartup(out IntPtr token, ref StartupInput input, out StartupOutput output);
Exemplo n.º 14
0
                public bool SuppressExternalCodecs;       // FALSE unless you want GDI+ only to use
                // its internal image codecs.

                public static StartupInput GetDefault() {
                    StartupInput result = new StartupInput();
                    result.GdiplusVersion = 1;
                    // result.DebugEventCallback = null;
                    result.SuppressBackgroundThread = false;
                    result.SuppressExternalCodecs  = false;
                    return result;
                }