Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/gfx/vr/service/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  VRService.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef GFX_VR_SERVICE_VRSERVICE_H
#define GFX_VR_SERVICE_VRSERVICE_H

#include "moz_external_vr.h"
#include "base/process.h"  // for base::ProcessHandle
#include "mozilla/Atomics.h"
#include "mozilla/TimeStamp.h"
#include "mozilla/UniquePtr.h"
#include "nsCOMPtr.h"

class nsIThread;
namespace mozilla {
class BackgroundHangMonitor;
namespace gfx {

class VRSession;
class VRShMem;

static const int kVRFrameTimingHistoryDepth = 100;

class VRService {
 public:
  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VRService)
  static already_AddRefed<VRService> Create(
      volatile VRExternalShmem* aShmem = nullptr);

  void Refresh();
  void Start();
  void Stop();

 private:
  explicit VRService(volatile VRExternalShmem* aShmem);
  ~VRService();

  void StopInternal(bool aFromDtor);

  bool InitShmem();
  void PushState(const mozilla::gfx::VRSystemState& aState);
  void PullState(mozilla::gfx::VRBrowserState& aState);

  /**
   * VRSystemState contains the most recent state of the VR
   * system, to be shared with the browser by Shmem.
   * mSystemState is the VR Service copy of this data, which
   * is memcpy'ed atomically to the Shmem.
   * VRSystemState is written by the VR Service, but read-only
   * by the browser.
   */

  VRSystemState mSystemState;
  /**
   * VRBrowserState contains the most recent state of the browser.
   * mBrowserState is memcpy'ed from the Shmem atomically
   */

  VRBrowserState mBrowserState;

  UniquePtr<VRSession> mSession;
  nsCOMPtr<nsIThread> mServiceThread;
  // Only ever accessed on the service thread.
  UniquePtr<mozilla::BackgroundHangMonitor> mBackgroundHangMonitor;

  Atomic<bool> mShutdownRequested;

  // Note: mShmem doesn't support RefPtr; thus, do not share this private
  // pointer so that its lifetime can still be controlled by VRService
  VRShMem* mShmem;
  VRHapticState mLastHapticState[kVRHapticsMaxCount];
  TimeStamp mFrameStartTime[kVRFrameTimingHistoryDepth];

  bool IsInServiceThread();
  void UpdateHaptics();

  /**
   * The VR Service thread is a state machine that always has one
   * task queued depending on the state.
   *
   * VR Service thread state task functions:
   */

  void ServiceInitialize();
  void ServiceShutdown();
  void ServiceWaitForImmersive();
  void ServiceImmersiveMode();
};

}  // namespace gfx
}  // namespace mozilla

#endif  // GFX_VR_SERVICE_VRSERVICE_H

Messung V0.5
C=91 H=94 G=92

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.