예제 #1
0
        /// <summary>
        ///     Applies one or more path information configurations
        /// </summary>
        /// <param name="pathInfos">An array of path information configuration</param>
        /// <param name="flags">DisplayConfigFlags flags</param>
        public static void SetDisplaysConfig(PathInfo[] pathInfos, DisplayConfigFlags flags)
        {
            try
            {
                var configsV2 = pathInfos.Select(config => config.GetPathInfoV2()).Cast <IPathInfo>().ToArray();
                DisplayApi.SetDisplayConfig(configsV2, flags);
                configsV2.DisposeAll();
            }
            catch (NVIDIAApiException ex)
            {
                if (ex.Status != Status.IncompatibleStructureVersion)
                {
                    throw;
                }
            }
            catch (NVIDIANotSupportedException)
            {
                // ignore
            }

            var configsV1 = pathInfos.Select(config => config.GetPathInfoV1()).Cast <IPathInfo>().ToArray();

            DisplayApi.SetDisplayConfig(configsV1, flags);
            configsV1.DisposeAll();
        }