Commit 2ae1a08f authored by Khushal's avatar Khushal Committed by Commit Bot

gpu: Handle invalid discardable handle allocation.

R=ericrk@chromium.org

Bug: 866434
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I6c47cf25c2f15c668b50622896170886e23e6658
Reviewed-on: https://chromium-review.googlesource.com/1147253Reviewed-by: default avatarEric Karl <ericrk@chromium.org>
Commit-Queue: Khushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577264}
parent b6f6a6e5
......@@ -60,9 +60,12 @@ ClientFontManager::~ClientFontManager() = default;
SkDiscardableHandleId ClientFontManager::createHandle() {
SkDiscardableHandleId handle_id = ++last_allocated_handle_id_;
discardable_handle_map_[handle_id] =
auto client_handle =
client_discardable_manager_.CreateHandle(command_buffer_);
if (client_handle.is_null())
return kInvalidSkDiscardableHandleId;
discardable_handle_map_[handle_id] = client_handle;
// Handles start with a ref-count.
locked_handles_.insert(handle_id);
return handle_id;
......@@ -74,7 +77,9 @@ bool ClientFontManager::lockHandle(SkDiscardableHandleId handle_id) {
return true;
auto it = discardable_handle_map_.find(handle_id);
DCHECK(it != discardable_handle_map_.end());
if (it == discardable_handle_map_.end())
return false;
bool locked = client_discardable_manager_.LockHandle(it->second);
if (locked) {
locked_handles_.insert(handle_id);
......
......@@ -36,6 +36,8 @@ class RASTER_EXPORT ClientFontManager
SkStrikeServer* strike_server() { return &strike_server_; }
private:
static constexpr SkDiscardableHandleId kInvalidSkDiscardableHandleId = -1;
Client* client_;
CommandBuffer* command_buffer_;
......
......@@ -29,6 +29,9 @@ void ClientTransferCache::UnmapAndCreateEntry(uint32_t type, uint32_t id) {
base::AutoLock hold(lock_);
ClientDiscardableHandle::Id discardable_handle_id =
discardable_manager_.CreateHandle(client_->command_buffer());
if (discardable_handle_id.is_null())
return;
ClientDiscardableHandle handle =
discardable_manager_.GetHandle(discardable_handle_id);
......
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