diff options
author | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-21 18:43:22 +0000 |
---|---|---|
committer | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-21 18:43:22 +0000 |
commit | dcc7b326b585c5de60590cd808aed91342311d05 (patch) | |
tree | 3743f9a91ccbbffb0961b6569622ac8d10867f75 /ipc | |
parent | 155e86ad19e6b938796ceeffcf2c6143b78614d1 (diff) | |
download | chromium_src-dcc7b326b585c5de60590cd808aed91342311d05.zip chromium_src-dcc7b326b585c5de60590cd808aed91342311d05.tar.gz chromium_src-dcc7b326b585c5de60590cd808aed91342311d05.tar.bz2 |
Relanding 61718.
I disabled the GPU watchdog in three new cases:
- If the OSMesa software renderer is in use. This will disable it on bots.
- When running on valgrind, whether on a bot or locally.
- In debug builds
I added a GPU process initialization time to the GPU info.
I moved the GPU initialization code outside the watchdog protection because it can take a long time and trigger the watchdog.
I increased the timeout. I set up a field trial with different timeouts to see the rate of failure for each period.
I made ui_tests always run with OSMesa, for consistent operation on bots and when run locally.
Original CL description:
I added a watchdog thread that intermitently checks the main thread can respond
to tasks posted on its message queue.
I fixed some bugs that preventede GGL from failing when the GPU channel was
lost.
Added a command line swith to disable the watchdog thread for debugging
purposes.
TEST=try, local testing of all features
BUG=none
Review URL: http://codereview.chromium.org/3794011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63388 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ipc')
-rw-r--r-- | ipc/ipc_message_utils.cc | 19 | ||||
-rw-r--r-- | ipc/ipc_message_utils.h | 9 |
2 files changed, 28 insertions, 0 deletions
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc index 9664810..cc10cc2 100644 --- a/ipc/ipc_message_utils.cc +++ b/ipc/ipc_message_utils.cc @@ -250,6 +250,25 @@ void ParamTraits<base::Time>::Log(const param_type& p, std::string* l) { ParamTraits<int64>::Log(p.ToInternalValue(), l); } +void ParamTraits<base::TimeDelta> ::Write(Message* m, const param_type& p) { + ParamTraits<int64> ::Write(m, p.InMicroseconds()); +} + +bool ParamTraits<base::TimeDelta> ::Read(const Message* m, + void** iter, + param_type* r) { + int64 value; + bool ret = ParamTraits<int64> ::Read(m, iter, &value); + if (ret) + *r = base::TimeDelta::FromMicroseconds(value); + + return ret; +} + +void ParamTraits<base::TimeDelta> ::Log(const param_type& p, std::string* l) { + ParamTraits<int64> ::Log(p.InMicroseconds(), l); +} + void ParamTraits<DictionaryValue>::Write(Message* m, const param_type& p) { WriteValue(m, &p, 0); } diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h index 0e22c6b..9629fac 100644 --- a/ipc/ipc_message_utils.h +++ b/ipc/ipc_message_utils.h @@ -88,6 +88,7 @@ class NullableString16; namespace base { class Time; +class TimeDelta; struct FileDescriptor; } @@ -293,6 +294,14 @@ struct ParamTraits<base::Time> { static void Log(const param_type& p, std::string* l); }; +template <> +struct ParamTraits<base::TimeDelta> { + typedef base::TimeDelta param_type; + static void Write(Message* m, const param_type& p); + static bool Read(const Message* m, void** iter, param_type* r); + static void Log(const param_type& p, std::string* l); +}; + #if defined(OS_WIN) template <> struct ParamTraits<LOGFONT> { |