gfx/thebes/gfxPlatformWorker.h
author Lee Salzman <lsalzman@mozilla.com>
Mon, 05 Dec 2022 04:40:45 +0000
changeset 644658 89666af4ddbca2c4e708ff80a6b869d420d45846
parent 624082 bcf1a9c73816421fd6f4e1bfd6edc140c67b6c07
permissions -rw-r--r--
Bug 1801307 - Remember last interval to speed up insertion search. r=jrmuizel This modifies AddInterval in wpf-gpu-raster to try to remember the last interval it searched for so that it doesn't have to search the entire interval list for every interval added. This should take us down from O(n^2) to closer to O(n) for this phase of rasterization. Differential Revision: https://phabricator.services.mozilla.com/D163795

/* -*- Mode: C++; tab-width: 20; 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 GFX_PLATFORM_WORKER_H
#define GFX_PLATFORM_WORKER_H

#include "mozilla/ThreadLocal.h"
#include "mozilla/RefPtr.h"

namespace mozilla {
namespace dom {
class WeakWorkerRef;
}  // namespace dom

namespace gfx {
class DrawTarget;
}  // namespace gfx
}  // namespace mozilla

/**
 * Threadlocal instance of gfxPlatform data that may be used/shared on a DOM
 * worker thread.
 */
class gfxPlatformWorker final {
 public:
  static gfxPlatformWorker* Get();
  static void Shutdown();

  RefPtr<mozilla::gfx::DrawTarget> ScreenReferenceDrawTarget();

 private:
  explicit gfxPlatformWorker(RefPtr<mozilla::dom::WeakWorkerRef>&& aWorkerRef);
  ~gfxPlatformWorker();

  static MOZ_THREAD_LOCAL(gfxPlatformWorker*) sInstance;

  RefPtr<mozilla::dom::WeakWorkerRef> mWorkerRef;

  RefPtr<mozilla::gfx::DrawTarget> mScreenReferenceDrawTarget;
};

#endif  // GFX_PLATFORM_WORKER_H