Chromium Code Reviews| Index: src/codec/SkJpegAutoClean.h |
| diff --git a/src/codec/SkJpegAutoClean.h b/src/codec/SkJpegAutoClean.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b9883e93670b1f32a8a1f84fbfe8243d6d0c4f88 |
| --- /dev/null |
| +++ b/src/codec/SkJpegAutoClean.h |
| @@ -0,0 +1,70 @@ |
| +/* |
| + * Copyright 2015 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef SkJpegAutoClean_DEFINED |
| +#define SkJpegAutoClean_DEFINED |
| + |
| +#include "SkTemplates.h" |
| +#include <stdio.h> |
|
scroggo
2015/04/10 17:19:05
We should not be using stdio.
msarett
2015/04/13 20:54:04
jpeglib has some sort of odd dependence on stdio.
|
| +extern "C" { |
|
scroggo
2015/04/10 17:19:05
For our other codec headers, we've discovered that
msarett
2015/04/13 20:54:04
Looks like that is the case here.
|
| + #include "jpeglib.h" |
| +} |
| + |
| +/* |
| + * This object automatically cleans up memory after a jpeg decode |
| + */ |
| +class JpegAutoClean { |
|
scroggo
2015/04/10 17:19:05
This should inherit from SkNoncopyable.
msarett
2015/04/13 20:54:04
Done.
|
| +public: |
| + |
| + /* |
| + * Takes ownership of jpegInfo pointer. |
| + */ |
| + JpegAutoClean(jpeg_decompress_struct* jpegInfo, bool init); |
|
scroggo
2015/04/10 17:19:05
nit: Traditionally, jpeg_decompress_struct is name
msarett
2015/04/13 20:54:04
Maybe for "compress info" and "decompress info"?
|
| + |
| + /* |
| + * Frees the owned jpeg_decompress_struct pointer as well as any allocated memory |
| + * that is referenced in the jpeg_decompress_struct. |
| + */ |
| + ~JpegAutoClean(); |
| + |
| + /* |
| + * Indicates if the jpeg info struct has been initialized with data. |
| + */ |
| + void setInit(bool init); |
| + |
| + /* |
| + * Get the jpeg info pointer. |
| + * Retains ownership of the jpeg_decompress_struct pointer. |
| + */ |
| + jpeg_decompress_struct* get(); |
| + |
| + /* |
| + * Detach the jpeg_decompress_struct pointer. |
| + * It is now owned by the caller. |
| + */ |
| + jpeg_decompress_struct* detach(); |
| + |
| + /* |
| + * Reset the pointer that is owned by this object. |
| + * This will free the original pointer and takes ownership of the pointer passed |
| + * as an argument. |
| + */ |
| + void reset(jpeg_decompress_struct* jpegInfo); |
| + |
| +private: |
| + |
| + /* |
| + * Frees the owned jpeg_decompress_struct pointer as well as any allocated memory |
| + * that is referenced in the jpeg_decompress_struct. |
| + */ |
| + void free(); |
| + |
| + SkAutoTDelete<jpeg_decompress_struct> fJpegInfo; |
| + bool fInit; |
| +}; |
| + |
| +#endif |