Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  WinCompositorWidget.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 widget_windows_WinCompositorWidget_h
#define widget_windows_WinCompositorWidget_h

#include "CompositorWidget.h"
#include "mozilla/Atomics.h"
#include "mozilla/gfx/CriticalSection.h"
#include "mozilla/gfx/Point.h"
#include "mozilla/layers/LayersTypes.h"
#include "mozilla/Mutex.h"
#include "mozilla/widget/WinCompositorWindowThread.h"
#include "FxROutputHandler.h"
#include "nsIWidget.h"

class nsWindow;

namespace mozilla::widget {

class PlatformCompositorWidgetDelegate : public CompositorWidgetDelegate {
 public:
  // Callbacks for nsWindow.
  virtual void EnterPresentLock() = 0;
  virtual void LeavePresentLock() = 0;
  virtual void OnDestroyWindow() = 0;
  virtual bool OnWindowResize(const LayoutDeviceIntSize& aSize) = 0;

  // Transparency handling.
  virtual void UpdateTransparency(TransparencyMode aMode) = 0;
  virtual void ClearTransparentWindow() = 0;

  // Deliver visibility info
  virtual void NotifyVisibilityUpdated(bool aIsFullyOccluded) = 0;

  // CompositorWidgetDelegate Overrides

  PlatformCompositorWidgetDelegate* AsPlatformSpecificDelegate() override {
    return this;
  }
};

class WinCompositorWidgetInitData;

// This is the Windows-specific implementation of CompositorWidget. For
// the most part it only requires an HWND, however it maintains extra state
// for transparent windows, as well as for synchronizing WM_SETTEXT messages
// with the compositor.
class WinCompositorWidget : public CompositorWidget {
 public:
  WinCompositorWidget(const WinCompositorWidgetInitData& aInitData,
                      const layers::CompositorOptions& aOptions);
  ~WinCompositorWidget() override;

  // CompositorWidget Overrides

  uintptr_t GetWidgetKey() override;
  WinCompositorWidget* AsWindows() override { return this; }

  HWND GetHwnd() const {
    return mCompositorWnds.mCompositorWnd ? mCompositorWnds.mCompositorWnd
                                          : mWnd;
  }

  HWND GetCompositorHwnd() const { return mCompositorWnds.mCompositorWnd; }

  void EnsureCompositorWindow();
  void DestroyCompositorWindow();
  void UpdateCompositorWndSizeIfNecessary();

  void RequestFxrOutput();
  bool HasFxrOutputHandler() const { return !!mFxrHandler; }
  FxROutputHandler* GetFxrOutputHandler() const { return mFxrHandler.get(); }

  virtual bool GetWindowIsFullyOccluded() const = 0;

  virtual void UpdateCompositorWnd(const HWND aCompositorWnd,
                                   const HWND aParentWnd) = 0;
  virtual void SetRootLayerTreeID(const layers::LayersId& aRootLayerTreeId) = 0;

  bool TransparencyModeIs(TransparencyMode aMode) const {
    return TransparencyMode(uint32_t(mTransparencyMode)) == aMode;
  }

 protected:
  void SetTransparencyMode(TransparencyMode aMode) {
    mTransparencyMode = uint32_t(aMode);
  }

  bool mSetParentCompleted = false;

 private:
  uintptr_t mWidgetKey;
  HWND mWnd;
  mozilla::Atomic<uint32_t, MemoryOrdering::Relaxed> mTransparencyMode;
  WinCompositorWnds mCompositorWnds;
  LayoutDeviceIntSize mLastCompositorWndSize;

  UniquePtr<FxROutputHandler> mFxrHandler;
};

}  // namespace mozilla::widget

#endif  // widget_windows_WinCompositorWidget_h

Messung V0.5
C=88 H=100 G=94

¤ Dauer der Verarbeitung: 0.13 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge