Exemplo n.º 1
0
        internal static async Task StartCaptureAsync([NotNull] StartCapture srv)
        {
            if (Settings.ScreenCaptureManager == null)
            {
                srv.Response.Success = false;
                srv.Response.Message = "No screenshot manager has been set for this platform";
                return;
            }

            string errorMessage = null;

            using (SemaphoreSlim signal = new SemaphoreSlim(0))
            {
                GameThread.Post(async() =>
                {
                    try
                    {
                        await Settings.ScreenCaptureManager.StartAsync(
                            srv.Request.ResolutionX, srv.Request.ResolutionY, srv.Request.WithHolograms);
                    }
                    catch (Exception e)
                    {
                        errorMessage = e.Message;
                    }
                    finally
                    {
                        signal.Release();
                    }
                });

                if (!await signal.WaitAsync(DefaultTimeoutInMs))
                {
                    Logger.Error("ControllerService: Unexpected timeout in StartCaptureAsync");
                    srv.Response.Success = false;
                    srv.Response.Message = "Request timed out";
                    return;
                }
            }

            if (errorMessage != null)
            {
                srv.Response.Success = false;
                srv.Response.Message = errorMessage;
                return;
            }

            srv.Response.Success = true;
        }
Exemplo n.º 2
0
        private void m_AudioCapDevices_SelectedValueChanged(object sender, EventArgs e)
        {
            if (!String.IsNullOrEmpty(m_AudioDir.Text) && !String.IsNullOrEmpty(m_AudioCapDevices.Text))
            {
                double ThreshVal = ((double)m_ThreshAdj.Value) / (m_ThreshAdj.Maximum - m_ThreshAdj.Minimum);
                ThreshVal = Math.Pow(Int16.MaxValue, ThreshVal);

                StartCapture sc = new StartCapture(DoAsyncStartCapture);
                sc.EndInvoke(sc.BeginInvoke(m_AudioCapDevices.Text, m_AudioDir.Text,
                                            (int)m_BuffTime.Value, (int)m_SkipTime.Value, (int)ThreshVal,
                                            null, null));

                m_UVMetersTimer.Enabled = true;
                m_UVMetersTimer.Start();
            }
        }