Commit 3d9b7ffc authored by Will Harris's avatar Will Harris Committed by Commit Bot

Fix an implicit conversion warning in cc/paint.

Needed to enable -Wshorten-64-to-32 on 64-bit builds.

In file included from ../../printing/metafile_skia_unittest.cc:7:
In file included from ../..\cc/paint/paint_record.h:9:
../..\cc/paint/paint_op_buffer.h(939,16):  warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    op->skip = skip;
             ~ ^~~~
../../printing/metafile_skia_unittest.cc(28,11):  note: in instantiation of function template specialization 'cc::PaintOpBuffer::push<cc::DrawRectOp, const SkRect &, cc::PaintFlags &>' requested here
  record->push<cc::DrawRectOp>(page_rect, flags);
          ^
In file included from ../../printing/metafile_skia_unittest.cc:7:
In file included from ../..\cc/paint/paint_record.h:9:
../..\cc/paint/paint_op_buffer.h(939,16):  warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    op->skip = skip;
             ~ ^~~~
../../printing/metafile_skia_unittest.cc(30,11):  note: in instantiation of function template specialization 'cc::PaintOpBuffer::push<cc::CustomDataOp, const unsigned int &>' requested here
  record->push<cc::CustomDataOp>(content_id);
          ^

BUG=879657

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I272f2eb17e5ebb348e6960226949f3f18e4696f2
Reviewed-on: https://chromium-review.googlesource.com/1217903Reviewed-by: default avatarenne <enne@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590140}
parent 0227cbd7
......@@ -7,6 +7,7 @@
#include <stdint.h>
#include <limits>
#include <string>
#include <type_traits>
......@@ -930,8 +931,9 @@ class CC_PAINT_EXPORT PaintOpBuffer : public SkRefCnt {
void push(Args&&... args) {
static_assert(std::is_convertible<T, PaintOp>::value, "T not a PaintOp.");
static_assert(alignof(T) <= PaintOpAlign, "");
size_t skip = ComputeOpSkip(sizeof(T));
static_assert(sizeof(T) < std::numeric_limits<uint16_t>::max(),
"Cannot fit op code in skip");
uint16_t skip = static_cast<uint16_t>(ComputeOpSkip(sizeof(T)));
T* op = reinterpret_cast<T*>(AllocatePaintOp(skip));
new (op) T{std::forward<Args>(args)...};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment