Index: ipc/ipc_channel_posix.cc |
diff --git a/ipc/ipc_channel_posix.cc b/ipc/ipc_channel_posix.cc |
index 85f4475c7ab761d8d747a134833e5857c9f41081..f8f7ac531936a389122791bfa8f4774bfe67ebb9 100644 |
--- a/ipc/ipc_channel_posix.cc |
+++ b/ipc/ipc_channel_posix.cc |
@@ -22,6 +22,7 @@ |
#endif |
#include <algorithm> |
+#include <iostream> |
#include <map> |
#include <string> |
@@ -39,6 +40,7 @@ |
#include "base/stl_util.h" |
#include "base/strings/string_util.h" |
#include "base/synchronization/lock.h" |
+#include "content/renderer/greenweb_latency_tracking.h" |
#include "ipc/attachment_broker.h" |
#include "ipc/ipc_descriptors.h" |
#include "ipc/ipc_listener.h" |
@@ -711,10 +713,26 @@ bool ChannelPosix::ProcessMessageForDelivery(Message* message) { |
Logging::GetInstance()->OnSendMessage(message, ""); |
#endif // IPC_MESSAGE_LOG_ENABLED |
- TRACE_EVENT_WITH_FLOW0(TRACE_DISABLED_BY_DEFAULT("ipc.flow"), |
+ // Ideally we want to send a dedicated to communicate the qos_type and |
+ // ebs_enabled info from the main thread to the GPU thread just once. |
+ // As a simple hack, we send them along with each message! The implication |
+ // of this simplification is that we need to make sure that we do not |
+ // overwrite the values in the main thread when we receive an IPC message |
+ // from other processes (see the implementation of |
+ // |ChannelReader::EmitLogBeforeDispatch| in ipc_channel_reader.cc). |
+ message->set_qos_type(g_qos_type); |
+ message->set_qos_target(g_qos_target); |
+ message->set_ebs_enabled(g_ebs_enabled); |
+ dbg_ipc_cout("Send" << ": g_ebs_enabled: " << g_ebs_enabled << |
+ ", g_qos_type: " << g_qos_type << |
+ ", g_qos_target" << g_qos_target); |
+ |
+ TRACE_EVENT_WITH_FLOW1(TRACE_DISABLED_BY_DEFAULT("ipc.flow"), |
"ChannelPosix::Send", |
message->flags(), |
- TRACE_EVENT_FLAG_FLOW_OUT); |
+ TRACE_EVENT_FLAG_FLOW_OUT, |
+ "QoS Type", |
+ message->qos_type()); |
// |output_queue_| takes ownership of |message|. |
OutputElement* element = new OutputElement(message); |