summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authordongseong.hwang@intel.com <dongseong.hwang@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-16 11:57:57 +0000
committerdongseong.hwang@intel.com <dongseong.hwang@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-16 11:57:57 +0000
commit28b989cc54a58fc7fabe0ef545cf5256d04ca8d9 (patch)
tree610081e373498dd2a47d0deaf00f8fe05116a1d6 /content
parenta1031cb38c8616ab2ecafe077c6a99b2c5f7cb18 (diff)
downloadchromium_src-28b989cc54a58fc7fabe0ef545cf5256d04ca8d9.zip
chromium_src-28b989cc54a58fc7fabe0ef545cf5256d04ca8d9.tar.gz
chromium_src-28b989cc54a58fc7fabe0ef545cf5256d04ca8d9.tar.bz2
SyncPointManager never returns 0.
When the next sync point overflow occurs, it returns 1, not 0. BUG=365904, 373452 Review URL: https://codereview.chromium.org/288153004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270997 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/common/gpu/sync_point_manager.cc3
-rw-r--r--content/common/gpu/sync_point_manager.h2
2 files changed, 4 insertions, 1 deletions
diff --git a/content/common/gpu/sync_point_manager.cc b/content/common/gpu/sync_point_manager.cc
index 9383574..5aa4b7e 100644
--- a/content/common/gpu/sync_point_manager.cc
+++ b/content/common/gpu/sync_point_manager.cc
@@ -26,6 +26,9 @@ SyncPointManager::~SyncPointManager() {
uint32 SyncPointManager::GenerateSyncPoint() {
base::AutoLock lock(lock_);
uint32 sync_point = next_sync_point_++;
+ // When an integer overflow occurs, don't return 0.
+ if (!sync_point)
+ sync_point = next_sync_point_++;
// Note: wrapping would take days for a buggy/compromized renderer that would
// insert sync points in a loop, but if that were to happen, better explicitly
diff --git a/content/common/gpu/sync_point_manager.h b/content/common/gpu/sync_point_manager.h
index d46ad60..77a4e6d 100644
--- a/content/common/gpu/sync_point_manager.h
+++ b/content/common/gpu/sync_point_manager.h
@@ -22,7 +22,7 @@ class SyncPointManager : public base::RefCountedThreadSafe<SyncPointManager> {
SyncPointManager();
// Generates a sync point, returning its ID. This can me called on any thread.
- // IDs start at 1.
+ // IDs start at a random number. Never return 0.
uint32 GenerateSyncPoint();
// Retires a sync point. This will call all the registered callbacks for this