summaryrefslogtreecommitdiffstats
path: root/src/core/render_widget_host_view_qt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/render_widget_host_view_qt.cpp')
-rw-r--r--src/core/render_widget_host_view_qt.cpp266
1 files changed, 140 insertions, 126 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 980550620..136371a91 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -73,6 +73,7 @@
#include "ui/gfx/geometry/size_conversions.h"
#if defined(USE_AURA)
+#include "ui/base/cursor/cursor.h"
#include "ui/base/cursor/cursors_aura.h"
#endif
@@ -105,9 +106,9 @@ enum ImStateFlags {
static inline ui::LatencyInfo CreateLatencyInfo(const blink::WebInputEvent& event) {
ui::LatencyInfo latency_info;
// The latency number should only be added if the timestamp is valid.
- if (event.timeStampSeconds) {
+ if (event.TimeStampSeconds()) {
const int64_t time_micros = static_cast<int64_t>(
- event.timeStampSeconds * base::Time::kMicrosecondsPerSecond);
+ event.TimeStampSeconds() * base::Time::kMicrosecondsPerSecond);
latency_info.AddLatencyNumberWithTimestamp(
ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
0,
@@ -218,7 +219,8 @@ public:
}
int GetFlags() const override { return flags; }
float GetPressure(size_t pointer_index) const override { return touchPoints.at(pointer_index).pressure(); }
- float GetTilt(size_t pointer_index) const override { return 0; }
+ float GetTiltX(size_t pointer_index) const override { return 0; }
+ float GetTiltY(size_t pointer_index) const override { return 0; }
base::TimeTicks GetEventTime() const override { return eventTime; }
size_t GetHistorySize() const override { return 0; }
@@ -261,12 +263,15 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget
, m_needsDelegatedFrameAck(false)
, m_loadVisuallyCommittedState(NotCommitted)
, m_adapterClient(0)
+ , m_rendererCompositorFrameSink(0)
, m_imeInProgress(false)
, m_receivedEmptyImeText(false)
, m_initPending(false)
, m_beginFrameSource(nullptr)
, m_needsBeginFrames(false)
+ , m_needsFlushInput(false)
, m_addedFrameObserver(false)
+ , m_backgroundColor(SK_ColorWHITE)
, m_imState(0)
, m_anchorPositionWithinSelection(-1)
, m_cursorPositionWithinSelection(-1)
@@ -444,12 +449,20 @@ gfx::Rect RenderWidgetHostViewQt::GetViewBounds() const
return gfx::BoundingRect(p1, p2);
}
+SkColor RenderWidgetHostViewQt::background_color() const
+{
+ return m_backgroundColor;
+}
+
void RenderWidgetHostViewQt::SetBackgroundColor(SkColor color)
{
- RenderWidgetHostViewBase::SetBackgroundColor(color);
+ if (m_backgroundColor == color)
+ return;
+ m_backgroundColor = color;
// Set the background of the compositor if necessary
m_delegate->setClearColor(toQt(color));
// Set the background of the blink::FrameView
+ m_host->SetBackgroundOpaque(SkColorGetA(color) == SK_AlphaOPAQUE);
m_host->Send(new RenderViewObserverQt_SetBackgroundColor(m_host->GetRoutingID(), color));
}
@@ -473,119 +486,119 @@ void RenderWidgetHostViewQt::UnlockMouse()
void RenderWidgetHostViewQt::UpdateCursor(const content::WebCursor &webCursor)
{
- content::WebCursor::CursorInfo cursorInfo;
+ content::CursorInfo cursorInfo;
webCursor.GetCursorInfo(&cursorInfo);
Qt::CursorShape shape = Qt::ArrowCursor;
#if defined(USE_AURA)
- int auraType = -1;
+ ui::CursorType auraType = ui::CursorType::kNull;
#endif
switch (cursorInfo.type) {
- case blink::WebCursorInfo::TypePointer:
+ case blink::WebCursorInfo::kTypePointer:
shape = Qt::ArrowCursor;
break;
- case blink::WebCursorInfo::TypeCross:
+ case blink::WebCursorInfo::kTypeCross:
shape = Qt::CrossCursor;
break;
- case blink::WebCursorInfo::TypeHand:
+ case blink::WebCursorInfo::kTypeHand:
shape = Qt::PointingHandCursor;
break;
- case blink::WebCursorInfo::TypeIBeam:
+ case blink::WebCursorInfo::kTypeIBeam:
shape = Qt::IBeamCursor;
break;
- case blink::WebCursorInfo::TypeWait:
+ case blink::WebCursorInfo::kTypeWait:
shape = Qt::WaitCursor;
break;
- case blink::WebCursorInfo::TypeHelp:
+ case blink::WebCursorInfo::kTypeHelp:
shape = Qt::WhatsThisCursor;
break;
- case blink::WebCursorInfo::TypeEastResize:
- case blink::WebCursorInfo::TypeWestResize:
- case blink::WebCursorInfo::TypeEastWestResize:
- case blink::WebCursorInfo::TypeEastPanning:
- case blink::WebCursorInfo::TypeWestPanning:
+ case blink::WebCursorInfo::kTypeEastResize:
+ case blink::WebCursorInfo::kTypeWestResize:
+ case blink::WebCursorInfo::kTypeEastWestResize:
+ case blink::WebCursorInfo::kTypeEastPanning:
+ case blink::WebCursorInfo::kTypeWestPanning:
shape = Qt::SizeHorCursor;
break;
- case blink::WebCursorInfo::TypeNorthResize:
- case blink::WebCursorInfo::TypeSouthResize:
- case blink::WebCursorInfo::TypeNorthSouthResize:
- case blink::WebCursorInfo::TypeNorthPanning:
- case blink::WebCursorInfo::TypeSouthPanning:
+ case blink::WebCursorInfo::kTypeNorthResize:
+ case blink::WebCursorInfo::kTypeSouthResize:
+ case blink::WebCursorInfo::kTypeNorthSouthResize:
+ case blink::WebCursorInfo::kTypeNorthPanning:
+ case blink::WebCursorInfo::kTypeSouthPanning:
shape = Qt::SizeVerCursor;
break;
- case blink::WebCursorInfo::TypeNorthEastResize:
- case blink::WebCursorInfo::TypeSouthWestResize:
- case blink::WebCursorInfo::TypeNorthEastSouthWestResize:
- case blink::WebCursorInfo::TypeNorthEastPanning:
- case blink::WebCursorInfo::TypeSouthWestPanning:
+ case blink::WebCursorInfo::kTypeNorthEastResize:
+ case blink::WebCursorInfo::kTypeSouthWestResize:
+ case blink::WebCursorInfo::kTypeNorthEastSouthWestResize:
+ case blink::WebCursorInfo::kTypeNorthEastPanning:
+ case blink::WebCursorInfo::kTypeSouthWestPanning:
shape = Qt::SizeBDiagCursor;
break;
- case blink::WebCursorInfo::TypeNorthWestResize:
- case blink::WebCursorInfo::TypeSouthEastResize:
- case blink::WebCursorInfo::TypeNorthWestSouthEastResize:
- case blink::WebCursorInfo::TypeNorthWestPanning:
- case blink::WebCursorInfo::TypeSouthEastPanning:
+ case blink::WebCursorInfo::kTypeNorthWestResize:
+ case blink::WebCursorInfo::kTypeSouthEastResize:
+ case blink::WebCursorInfo::kTypeNorthWestSouthEastResize:
+ case blink::WebCursorInfo::kTypeNorthWestPanning:
+ case blink::WebCursorInfo::kTypeSouthEastPanning:
shape = Qt::SizeFDiagCursor;
break;
- case blink::WebCursorInfo::TypeColumnResize:
+ case blink::WebCursorInfo::kTypeColumnResize:
shape = Qt::SplitHCursor;
break;
- case blink::WebCursorInfo::TypeRowResize:
+ case blink::WebCursorInfo::kTypeRowResize:
shape = Qt::SplitVCursor;
break;
- case blink::WebCursorInfo::TypeMiddlePanning:
- case blink::WebCursorInfo::TypeMove:
+ case blink::WebCursorInfo::kTypeMiddlePanning:
+ case blink::WebCursorInfo::kTypeMove:
shape = Qt::SizeAllCursor;
break;
- case blink::WebCursorInfo::TypeProgress:
+ case blink::WebCursorInfo::kTypeProgress:
shape = Qt::BusyCursor;
break;
#if defined(USE_AURA)
- case blink::WebCursorInfo::TypeVerticalText:
- auraType = ui::kCursorVerticalText;
+ case blink::WebCursorInfo::kTypeVerticalText:
+ auraType = ui::CursorType::kVerticalText;
break;
- case blink::WebCursorInfo::TypeCell:
- auraType = ui::kCursorCell;
+ case blink::WebCursorInfo::kTypeCell:
+ auraType = ui::CursorType::kCell;
break;
- case blink::WebCursorInfo::TypeContextMenu:
- auraType = ui::kCursorContextMenu;
+ case blink::WebCursorInfo::kTypeContextMenu:
+ auraType = ui::CursorType::kContextMenu;
break;
- case blink::WebCursorInfo::TypeAlias:
- auraType = ui::kCursorAlias;
+ case blink::WebCursorInfo::kTypeAlias:
+ auraType = ui::CursorType::kAlias;
break;
- case blink::WebCursorInfo::TypeCopy:
- auraType = ui::kCursorCopy;
+ case blink::WebCursorInfo::kTypeCopy:
+ auraType = ui::CursorType::kCopy;
break;
- case blink::WebCursorInfo::TypeZoomIn:
- auraType = ui::kCursorZoomIn;
+ case blink::WebCursorInfo::kTypeZoomIn:
+ auraType = ui::CursorType::kZoomIn;
break;
- case blink::WebCursorInfo::TypeZoomOut:
- auraType = ui::kCursorZoomOut;
+ case blink::WebCursorInfo::kTypeZoomOut:
+ auraType = ui::CursorType::kZoomOut;
break;
#else
- case blink::WebCursorInfo::TypeVerticalText:
- case blink::WebCursorInfo::TypeCell:
- case blink::WebCursorInfo::TypeContextMenu:
- case blink::WebCursorInfo::TypeAlias:
- case blink::WebCursorInfo::TypeCopy:
- case blink::WebCursorInfo::TypeZoomIn:
- case blink::WebCursorInfo::TypeZoomOut:
+ case blink::WebCursorInfo::kTypeVerticalText:
+ case blink::WebCursorInfo::kTypeCell:
+ case blink::WebCursorInfo::kTypeContextMenu:
+ case blink::WebCursorInfo::kTypeAlias:
+ case blink::WebCursorInfo::kTypeCopy:
+ case blink::WebCursorInfo::kTypeZoomIn:
+ case blink::WebCursorInfo::kTypeZoomOut:
// FIXME: Support on OS X
break;
#endif
- case blink::WebCursorInfo::TypeNoDrop:
- case blink::WebCursorInfo::TypeNotAllowed:
+ case blink::WebCursorInfo::kTypeNoDrop:
+ case blink::WebCursorInfo::kTypeNotAllowed:
shape = Qt::ForbiddenCursor;
break;
- case blink::WebCursorInfo::TypeNone:
+ case blink::WebCursorInfo::kTypeNone:
shape = Qt::BlankCursor;
break;
- case blink::WebCursorInfo::TypeGrab:
+ case blink::WebCursorInfo::kTypeGrab:
shape = Qt::OpenHandCursor;
break;
- case blink::WebCursorInfo::TypeGrabbing:
+ case blink::WebCursorInfo::kTypeGrabbing:
shape = Qt::ClosedHandCursor;
break;
- case blink::WebCursorInfo::TypeCustom:
+ case blink::WebCursorInfo::kTypeCustom:
if (cursorInfo.custom_image.colorType() == SkColorType::kN32_SkColorType) {
QImage cursor = toQImage(cursorInfo.custom_image, QImage::Format_ARGB32);
m_delegate->updateCursor(QCursor(QPixmap::fromImage(cursor), cursorInfo.hotspot.x(), cursorInfo.hotspot.y()));
@@ -594,7 +607,7 @@ void RenderWidgetHostViewQt::UpdateCursor(const content::WebCursor &webCursor)
break;
}
#if defined(USE_AURA)
- if (auraType > 0) {
+ if (auraType != ui::CursorType::kNull) {
SkBitmap bitmap;
gfx::Point hotspot;
if (ui::GetCursorBitmap(auraType, &bitmap, &hotspot)) {
@@ -640,54 +653,36 @@ void RenderWidgetHostViewQt::SetTooltipText(const base::string16 &tooltip_text)
m_adapterClient->setToolTip(toQt(tooltip_text));
}
-void RenderWidgetHostViewQt::CopyFromCompositingSurface(const gfx::Rect& src_subrect, const gfx::Size& dst_size, const content::ReadbackRequestCallback& callback, const SkColorType color_type)
-{
- NOTIMPLEMENTED();
- Q_UNUSED(src_subrect);
- Q_UNUSED(dst_size);
- Q_UNUSED(color_type);
- callback.Run(SkBitmap(), content::READBACK_FAILED);
-}
-
-void RenderWidgetHostViewQt::CopyFromCompositingSurfaceToVideoFrame(const gfx::Rect& src_subrect, const scoped_refptr<media::VideoFrame>& target, const base::Callback<void(const gfx::Rect&, bool)>& callback)
-{
- NOTIMPLEMENTED();
- callback.Run(gfx::Rect(), false);
-}
-
-bool RenderWidgetHostViewQt::CanCopyToVideoFrame() const
-{
- return false;
-}
-
bool RenderWidgetHostViewQt::HasAcceleratedSurface(const gfx::Size&)
{
return false;
}
-void RenderWidgetHostViewQt::LockCompositingSurface()
-{
-}
-
-void RenderWidgetHostViewQt::UnlockCompositingSurface()
+void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(cc::mojom::MojoCompositorFrameSinkClient *frameSink)
{
+ // Accumulated resources belong to the old RendererCompositorFrameSink and
+ // should not be returned.
+ m_resourcesToRelease.clear();
+ m_rendererCompositorFrameSink = frameSink;
}
-void RenderWidgetHostViewQt::OnSwapCompositorFrame(uint32_t output_surface_id, cc::CompositorFrame frame)
+void RenderWidgetHostViewQt::SubmitCompositorFrame(const cc::LocalSurfaceId &local_surface_id, cc::CompositorFrame frame)
{
bool scrollOffsetChanged = (m_lastScrollOffset != frame.metadata.root_scroll_offset);
bool contentsSizeChanged = (m_lastContentsSize != frame.metadata.root_layer_size);
m_lastScrollOffset = frame.metadata.root_scroll_offset;
m_lastContentsSize = frame.metadata.root_layer_size;
+ m_backgroundColor = frame.metadata.root_background_color;
+ if (m_localSurfaceId != local_surface_id) {
+ m_localSurfaceId = local_surface_id;
+ // FIXME: update frame_size and device_scale_factor?
+ // FIXME: showPrimarySurface()?
+ }
Q_ASSERT(!m_needsDelegatedFrameAck);
m_needsDelegatedFrameAck = true;
- m_pendingOutputSurfaceId = output_surface_id;
- Q_ASSERT(frame.delegated_frame_data);
- Q_ASSERT(!m_chromiumCompositorData->frameData || m_chromiumCompositorData->frameData->resource_list.empty());
- if (m_chromiumCompositorData->frameData.get())
- m_chromiumCompositorData->previousFrameData = std::move(m_chromiumCompositorData->frameData);
- m_chromiumCompositorData->frameData = std::move(frame.delegated_frame_data);
+ m_chromiumCompositorData->previousFrameData = std::move(m_chromiumCompositorData->frameData);
m_chromiumCompositorData->frameDevicePixelRatio = frame.metadata.device_scale_factor;
+ m_chromiumCompositorData->frameData = std::move(frame);
// Support experimental.viewport.devicePixelRatio, see GetScreenInfo implementation below.
float dpiScale = this->dpiScale();
@@ -789,8 +784,12 @@ void RenderWidgetHostViewQt::OnTextSelectionChanged(content::TextInputManager *t
Q_UNUSED(text_input_manager);
Q_UNUSED(updated_view);
+ const content::TextInputManager::TextSelection *selection = GetTextInputManager()->GetTextSelection(updated_view);
+ if (!selection)
+ return;
+
#if defined(USE_X11)
- if (!GetSelectedText().empty()) {
+ if (!GetSelectedText().empty() && selection->user_initiated()) {
// Set the CLIPBOARD_TYPE_SELECTION to the ui::Clipboard.
ui::ScopedClipboardWriter clipboard_writer(ui::CLIPBOARD_TYPE_SELECTION);
clipboard_writer.WriteText(GetSelectedText());
@@ -825,29 +824,34 @@ void RenderWidgetHostViewQt::selectionChanged()
return;
}
- const content::TextInputManager::TextSelection *selection = text_input_manager_->GetTextSelection();
- if (!selection)
+ if (GetSelectedText().empty()) {
+ m_anchorPositionWithinSelection = m_cursorPosition;
+ m_cursorPositionWithinSelection = m_cursorPosition;
+
+ if (!m_emptyPreviousSelection) {
+ m_emptyPreviousSelection = GetSelectedText().empty();
+ m_adapterClient->selectionChanged();
+ }
+
return;
+ }
- if (!selection->range.IsValid())
+ const content::TextInputManager::TextSelection *selection = text_input_manager_->GetTextSelection();
+ if (!selection)
return;
- // Avoid duplicate empty selectionChanged() signals
- if (GetSelectedText().empty() && m_emptyPreviousSelection) {
- m_anchorPositionWithinSelection = m_cursorPosition;
- m_cursorPositionWithinSelection = m_cursorPosition;
+ if (!selection->range().IsValid())
return;
- }
int newAnchorPositionWithinSelection = 0;
int newCursorPositionWithinSelection = 0;
if (text_input_manager_->GetSelectionRegion()->anchor.type() == gfx::SelectionBound::RIGHT) {
- newAnchorPositionWithinSelection = selection->range.GetMax() - selection->offset;
- newCursorPositionWithinSelection = selection->range.GetMin() - selection->offset;
+ newAnchorPositionWithinSelection = selection->range().GetMax() - selection->offset();
+ newCursorPositionWithinSelection = selection->range().GetMin() - selection->offset();
} else {
- newAnchorPositionWithinSelection = selection->range.GetMin() - selection->offset;
- newCursorPositionWithinSelection = selection->range.GetMax() - selection->offset;
+ newAnchorPositionWithinSelection = selection->range().GetMin() - selection->offset();
+ newCursorPositionWithinSelection = selection->range().GetMax() - selection->offset();
}
if (m_anchorPositionWithinSelection == newAnchorPositionWithinSelection && m_cursorPositionWithinSelection == newCursorPositionWithinSelection)
@@ -1006,17 +1010,17 @@ QVariant RenderWidgetHostViewQt::inputMethodQuery(Qt::InputMethodQuery query)
void RenderWidgetHostViewQt::ProcessAckedTouchEvent(const content::TouchEventWithLatencyInfo &touch, content::InputEventAckState ack_result) {
Q_UNUSED(touch);
const bool eventConsumed = ack_result == content::INPUT_EVENT_ACK_STATE_CONSUMED;
- m_gestureProvider.OnTouchEventAck(touch.event.uniqueTouchEventId, eventConsumed);
+ m_gestureProvider.OnTouchEventAck(touch.event.unique_touch_event_id, eventConsumed);
}
void RenderWidgetHostViewQt::sendDelegatedFrameAck()
{
- m_beginFrameSource->DidFinishFrame(this, 0);
+ const cc::BeginFrameAck ack;
+ m_beginFrameSource->DidFinishFrame(this, ack);
cc::ReturnedResourceArray resources;
m_resourcesToRelease.swap(resources);
- content::RenderWidgetHostImpl::SendReclaimCompositorResources(
- m_host->GetRoutingID(), m_pendingOutputSurfaceId,
- m_host->GetProcess()->GetID(), true, resources);
+ if (m_rendererCompositorFrameSink)
+ m_rendererCompositorFrameSink->DidReceiveCompositorFrameAck(resources);
}
void RenderWidgetHostViewQt::processMotionEvent(const ui::MotionEvent &motionEvent)
@@ -1056,7 +1060,7 @@ float RenderWidgetHostViewQt::dpiScale() const
bool RenderWidgetHostViewQt::IsPopup() const
{
- return popup_type_ != blink::WebPopupTypeNone;
+ return popup_type_ != blink::kWebPopupTypeNone;
}
void RenderWidgetHostViewQt::handleMouseEvent(QMouseEvent* event)
@@ -1069,8 +1073,8 @@ void RenderWidgetHostViewQt::handleMouseEvent(QMouseEvent* event)
return;
blink::WebMouseEvent webEvent = WebEventFactory::toWebMouseEvent(event, dpiScale());
- if ((webEvent.type == blink::WebInputEvent::MouseDown || webEvent.type == blink::WebInputEvent::MouseUp)
- && webEvent.button == blink::WebMouseEvent::Button::NoButton) {
+ if ((webEvent.GetType() == blink::WebInputEvent::kMouseDown || webEvent.GetType() == blink::WebInputEvent::kMouseUp)
+ && webEvent.button == blink::WebMouseEvent::Button::kNoButton) {
// Blink can only handle the 3 main mouse-buttons and may assert when processing mouse-down for no button.
return;
}
@@ -1083,13 +1087,13 @@ void RenderWidgetHostViewQt::handleMouseEvent(QMouseEvent* event)
m_clickHelper.clickCounter = 0;
m_clickHelper.lastPressTimestamp = event->timestamp();
- webEvent.clickCount = ++m_clickHelper.clickCounter;
+ webEvent.click_count = ++m_clickHelper.clickCounter;
m_clickHelper.lastPressButton = event->button();
m_clickHelper.lastPressPosition = QPointF(event->pos()).toPoint();
}
- webEvent.movementX = event->globalX() - m_previousMousePosition.x();
- webEvent.movementY = event->globalY() - m_previousMousePosition.y();
+ webEvent.movement_x = event->globalX() - m_previousMousePosition.x();
+ webEvent.movement_y = event->globalY() - m_previousMousePosition.y();
if (IsMouseLocked())
QCursor::setPos(m_previousMousePosition);
@@ -1140,7 +1144,7 @@ void RenderWidgetHostViewQt::handleKeyEvent(QKeyEvent *ev)
}
content::NativeWebKeyboardEvent webEvent = WebEventFactory::toWebKeyboardEvent(ev);
- bool keyDownTextInsertion = webEvent.type == blink::WebInputEvent::RawKeyDown && webEvent.text[0];
+ bool keyDownTextInsertion = webEvent.GetType() == blink::WebInputEvent::kRawKeyDown && webEvent.text[0];
webEvent.skip_in_browser = keyDownTextInsertion;
m_host->ForwardKeyboardEvent(webEvent);
@@ -1149,7 +1153,7 @@ void RenderWidgetHostViewQt::handleKeyEvent(QKeyEvent *ev)
// The RawKeyDown is skipped on the way back (see above).
// The same os_event will be set on both NativeWebKeyboardEvents.
webEvent.skip_in_browser = false;
- webEvent.type = blink::WebInputEvent::Char;
+ webEvent.SetType(blink::WebInputEvent::kChar);
m_host->ForwardKeyboardEvent(webEvent);
}
}
@@ -1491,24 +1495,34 @@ void RenderWidgetHostViewQt::SetNeedsBeginFrames(bool needs_begin_frames)
updateNeedsBeginFramesInternal();
}
+void RenderWidgetHostViewQt::OnSetNeedsFlushInput()
+{
+ m_needsFlushInput = true;
+ updateNeedsBeginFramesInternal();
+}
+
void RenderWidgetHostViewQt::updateNeedsBeginFramesInternal()
{
if (!m_beginFrameSource)
return;
- if (m_addedFrameObserver == m_needsBeginFrames)
+ // Based on upstream Chromium commit 7f7c8cc8b97dd0d5c9159d9e60c62efbc35e6b53.
+ bool needsFrame = m_needsBeginFrames || m_needsFlushInput;
+ if (m_addedFrameObserver == needsFrame)
return;
- if (m_needsBeginFrames)
+ m_addedFrameObserver = needsFrame;
+ if (needsFrame)
m_beginFrameSource->AddObserver(this);
else
m_beginFrameSource->RemoveObserver(this);
- m_addedFrameObserver = m_needsBeginFrames;
}
bool RenderWidgetHostViewQt::OnBeginFrameDerivedImpl(const cc::BeginFrameArgs& args)
{
+ m_needsFlushInput = false;
m_beginFrameSource->OnUpdateVSyncParameters(args.frame_time, args.interval);
+ updateNeedsBeginFramesInternal();
m_host->Send(new ViewMsg_BeginFrame(m_host->GetRoutingID(), args));
return true;
}