gfx/gl/SharedSurfaceGL.h
author Jed Davis <jld@mozilla.com>
Tue, 09 Aug 2022 00:35:18 +0000
changeset 626479 8e1a65ad0c4d3b0ca9a076521252f2ba28fa898b
parent 535719 16c5dd2cfd600a62c80ca17cfb35c0868e016056
permissions -rw-r--r--
Bug 1778052 - Don't reset ignored signals when starting a sandboxed child process on Linux. r=gcp We uninstall signal handlers in child processes after clone(), because they probably won't do the right thing if invoked in that context. However, the current code also resets signals which were ignored; if that disposition was set by an outside program like `nohup`, the expectation is that it should be inherited. This patch omits those signals when resetting handlers (similar to what `exec` does). Differential Revision: https://phabricator.services.mozilla.com/D151336

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

#include "SharedSurface.h"

namespace mozilla {
namespace gl {

class MozFramebuffer;

// For readback and bootstrapping:
class SharedSurface_Basic final : public SharedSurface {
 public:
  static UniquePtr<SharedSurface_Basic> Create(const SharedSurfaceDesc&);

 private:
  SharedSurface_Basic(const SharedSurfaceDesc& desc,
                      UniquePtr<MozFramebuffer>&& fb);

 public:
  Maybe<layers::SurfaceDescriptor> ToSurfaceDescriptor() override;
};

class SurfaceFactory_Basic final : public SurfaceFactory {
 public:
  explicit SurfaceFactory_Basic(GLContext& gl);

  virtual UniquePtr<SharedSurface> CreateSharedImpl(
      const SharedSurfaceDesc& desc) override {
    return SharedSurface_Basic::Create(desc);
  }
};

}  // namespace gl
}  // namespace mozilla

#endif  // SHARED_SURFACE_GL_H_