Index: ppapi/shared_impl/proxy_lock.h |
diff --git a/ppapi/shared_impl/proxy_lock.h b/ppapi/shared_impl/proxy_lock.h |
index 8e82ea609aa988f396816bf336552b6c30e4e63a..23afc0e5506e5160b575e08735e44413c0ddbdfb 100644 |
--- a/ppapi/shared_impl/proxy_lock.h |
+++ b/ppapi/shared_impl/proxy_lock.h |
@@ -117,28 +117,34 @@ ReturnType CallWhileUnlocked(ReturnType (*function)()) { |
ProxyAutoUnlock unlock; |
return function(); |
} |
-template <class ReturnType, class P1> |
-ReturnType CallWhileUnlocked(ReturnType (*function)(P1), const P1& p1) { |
+// Note we use 2 types for the params, even though for the most part we expect |
+// A1 to match P1. We let the compiler determine if P1 can convert safely to |
+// A1. This allows callers to avoid having to do things like |
+// const_cast to add const. |
+template <class ReturnType, class A1, class P1> |
+ReturnType CallWhileUnlocked(ReturnType (*function)(A1), const P1& p1) { |
ProxyAutoUnlock unlock; |
return function(p1); |
} |
-template <class ReturnType, class P1, class P2> |
-ReturnType CallWhileUnlocked(ReturnType (*function)(P1, P2), |
+template <class ReturnType, class A1, class A2, class P1, class P2> |
+ReturnType CallWhileUnlocked(ReturnType (*function)(A1, A2), |
const P1& p1, |
const P2& p2) { |
ProxyAutoUnlock unlock; |
return function(p1, p2); |
} |
-template <class ReturnType, class P1, class P2, class P3> |
-ReturnType CallWhileUnlocked(ReturnType (*function)(P1, P2, P3), |
+template <class ReturnType, class A1, class A2, class A3, class P1, class P2, |
+ class P3> |
+ReturnType CallWhileUnlocked(ReturnType (*function)(A1, A2, A3), |
const P1& p1, |
const P2& p2, |
const P3& p3) { |
ProxyAutoUnlock unlock; |
return function(p1, p2, p3); |
} |
-template <class ReturnType, class P1, class P2, class P3, class P4> |
-ReturnType CallWhileUnlocked(ReturnType (*function)(P1, P2, P3, P4), |
+template <class ReturnType, class A1, class A2, class A3, class A4, class P1, |
+ class P2, class P3, class P4> |
+ReturnType CallWhileUnlocked(ReturnType (*function)(A1, A2, A3, A4), |
const P1& p1, |
const P2& p2, |
const P3& p3, |
@@ -146,8 +152,9 @@ ReturnType CallWhileUnlocked(ReturnType (*function)(P1, P2, P3, P4), |
ProxyAutoUnlock unlock; |
return function(p1, p2, p3, p4); |
} |
-template <class ReturnType, class P1, class P2, class P3, class P4, class P5> |
-ReturnType CallWhileUnlocked(ReturnType (*function)(P1, P2, P3, P4, P5), |
+template <class ReturnType, class A1, class A2, class A3, class A4, class A5, |
+ class P1, class P2, class P3, class P4, class P5> |
+ReturnType CallWhileUnlocked(ReturnType (*function)(A1, A2, A3, A4, A5), |
const P1& p1, |
const P2& p2, |
const P3& p3, |