author Ted Mielczarek <>
Fri, 06 Jan 2017 05:57:10 -0500
changeset 328603 dedf4f49b3756b09986e78dc5519a291b81f133f
parent 315316 b7ead4d4eb90ac9e8f112574dc194691e507658e
child 389027 5f74d262924171a8fa0b4483a64f4cac34c4c9b8
permissions -rw-r--r--
bug 1329320 - replace makecab with rust-makecab in symbolstore. r=gps It turns out that running makecab to compress PDB files takes a significant amount of time in the buildsymbols step. I wrote an implementation of makecab in Rust that implements only the subset of features we use and it's significantly faster: This patch adds a makecab check to moz.configure, adds a release build of the makecab binary to the Windows tooltool manifests, points the build at it from, and changes to use MAKECAB from substs instead of calling `makecab.exe` directly. MozReview-Commit-ID: 76FHLIZFCXS

/* -*- 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 */


#include "ImageContainer.h"
#include "mozilla/gfx/MacIOSurface.h"
#include "mozilla/gfx/Point.h"
#include "mozilla/layers/TextureClient.h"

namespace mozilla {

namespace layers {

class MacIOSurfaceImage : public Image {
  explicit MacIOSurfaceImage(MacIOSurface* aSurface)
   : Image(nullptr, ImageFormat::MAC_IOSURFACE),

  MacIOSurface* GetSurface() { return mSurface; }

  gfx::IntSize GetSize() override {
    return gfx::IntSize::Truncate(mSurface->GetDevicePixelWidth(),

  virtual already_AddRefed<gfx::SourceSurface> GetAsSourceSurface() override;

  virtual TextureClient* GetTextureClient(KnowsCompositor* aForwarder) override;

  virtual MacIOSurfaceImage* AsMacIOSurfaceImage() override {
    return this;

  RefPtr<MacIOSurface> mSurface;
  RefPtr<TextureClient> mTextureClient;

} // namespace layers
} // namespace mozilla