Index: ppapi/proxy/serialized_var.cc |
=================================================================== |
--- ppapi/proxy/serialized_var.cc (revision 71973) |
+++ ppapi/proxy/serialized_var.cc (working copy) |
@@ -225,9 +225,9 @@ |
SerializedVarSendInput::SerializedVarSendInput(Dispatcher* dispatcher, |
const PP_Var& var) |
- : SerializedVar(dispatcher->serialization_rules(), var) { |
- dispatcher->serialization_rules()->SendCallerOwned(var, |
- inner_->GetStringPtr()); |
+ : SerializedVar(dispatcher->serialization_rules()) { |
+ inner_->SetVar(dispatcher->serialization_rules()->SendCallerOwned( |
+ var, inner_->GetStringPtr())); |
} |
// static |
@@ -237,9 +237,10 @@ |
std::vector<SerializedVar>* output) { |
output->resize(input_count); |
for (size_t i = 0; i < input_count; i++) { |
- (*output)[i] = SerializedVar(dispatcher->serialization_rules(), input[i]); |
- dispatcher->serialization_rules()->SendCallerOwned( |
- input[i], (*output)[i].inner_->GetStringPtr()); |
+ SerializedVar& cur = (*output)[i]; |
+ cur = SerializedVar(dispatcher->serialization_rules()); |
+ cur.inner_->SetVar(dispatcher->serialization_rules()->SendCallerOwned( |
+ input[i], cur.inner_->GetStringPtr())); |
} |
} |
@@ -251,7 +252,7 @@ |
PP_Var ReceiveSerializedVarReturnValue::Return(Dispatcher* dispatcher) { |
inner_->set_serialization_rules(dispatcher->serialization_rules()); |
inner_->SetVar(inner_->serialization_rules()->ReceivePassRef( |
- inner_->GetIncompleteVar(), inner_->GetString())); |
+ inner_->GetIncompleteVar(), inner_->GetString(), dispatcher)); |
return inner_->GetVar(); |
} |
@@ -260,6 +261,7 @@ |
ReceiveSerializedException::ReceiveSerializedException(Dispatcher* dispatcher, |
PP_Var* exception) |
: SerializedVar(dispatcher->serialization_rules()), |
+ dispatcher_(dispatcher), |
exception_(exception) { |
} |
@@ -268,7 +270,7 @@ |
// When an output exception is specified, it will take ownership of the |
// reference. |
inner_->SetVar(inner_->serialization_rules()->ReceivePassRef( |
- inner_->GetIncompleteVar(), inner_->GetString())); |
+ inner_->GetIncompleteVar(), inner_->GetString(), dispatcher_)); |
*exception_ = inner_->GetVar(); |
} else { |
// When no output exception is specified, the browser thinks we have a ref |
@@ -342,7 +344,8 @@ |
serialized_.inner_->SetVar( |
serialized_.inner_->serialization_rules()->BeginReceiveCallerOwned( |
serialized_.inner_->GetIncompleteVar(), |
- serialized_.inner_->GetStringPtr())); |
+ serialized_.inner_->GetStringPtr(), |
+ dispatcher)); |
return serialized_.inner_->GetVar(); |
} |
@@ -372,7 +375,8 @@ |
serialized_[i].inner_->SetVar( |
serialized_[i].inner_->serialization_rules()->BeginReceiveCallerOwned( |
serialized_[i].inner_->GetIncompleteVar(), |
- serialized_[i].inner_->GetStringPtr())); |
+ serialized_[i].inner_->GetStringPtr(), |
+ dispatcher)); |
deserialized_[i] = serialized_[i].inner_->GetVar(); |
} |
@@ -390,14 +394,14 @@ |
const PP_Var& var) { |
serialized_->inner_->set_serialization_rules( |
dispatcher->serialization_rules()); |
- serialized_->inner_->SetVar(var); |
// Var must clean up after our BeginSendPassRef call. |
serialized_->inner_->set_cleanup_mode(SerializedVar::END_SEND_PASS_REF); |
- dispatcher->serialization_rules()->BeginSendPassRef( |
- serialized_->inner_->GetIncompleteVar(), |
- serialized_->inner_->GetStringPtr()); |
+ serialized_->inner_->SetVar( |
+ dispatcher->serialization_rules()->BeginSendPassRef( |
+ var, |
+ serialized_->inner_->GetStringPtr())); |
} |
// SerializedVarOutParam ------------------------------------------------------- |
@@ -411,9 +415,9 @@ |
if (serialized_->inner_->serialization_rules()) { |
// When unset, OutParam wasn't called. We'll just leave the var untouched |
// in that case. |
- serialized_->inner_->SetVar(writable_var_); |
- serialized_->inner_->serialization_rules()->BeginSendPassRef( |
- writable_var_, serialized_->inner_->GetStringPtr()); |
+ serialized_->inner_->SetVar( |
+ serialized_->inner_->serialization_rules()->BeginSendPassRef( |
+ writable_var_, serialized_->inner_->GetStringPtr())); |
// Normally the current object will be created on the stack to wrap a |
// SerializedVar and won't have a scope around the actual IPC send. So we |