forked from mirrors/gecko-dev
Bug 1749745 - Initialize AndroidCompositorWidget with initial size. r=aosmond,geckoview-reviewers,agi
Since bug 1747116 landed, if the compositor is reinitialized whilst the Android Surface is invalid, we avoid crashing when querying the window size and instead keep the compositor in a paused state. However, in this case we will believe the widget size is 0x0 until the compositor is eventually resumed. If webrender receives a display list during this time, it will set an empty view rect. This means when the compositor is subsequently resumed webrender believes it has nothing to render, and we get stuck in a state where nothing is ever rendered to the screen. This patch initializes the AndroidCompositorWidget with an initial size, which avoids the problem. Differential Revision: https://phabricator.services.mozilla.com/D135711
This commit is contained in:
parent
f993cdb15f
commit
0ca5c9a304
3 changed files with 4 additions and 2 deletions
|
|
@ -20,7 +20,7 @@ AndroidCompositorWidget::AndroidCompositorWidget(
|
||||||
mWidgetId(aInitData.widgetId()),
|
mWidgetId(aInitData.widgetId()),
|
||||||
mNativeWindow(nullptr),
|
mNativeWindow(nullptr),
|
||||||
mFormat(WINDOW_FORMAT_RGBA_8888),
|
mFormat(WINDOW_FORMAT_RGBA_8888),
|
||||||
mClientSize(0, 0) {}
|
mClientSize(aInitData.clientSize()) {}
|
||||||
|
|
||||||
AndroidCompositorWidget::~AndroidCompositorWidget() {
|
AndroidCompositorWidget::~AndroidCompositorWidget() {
|
||||||
if (mNativeWindow) {
|
if (mNativeWindow) {
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ namespace widget {
|
||||||
struct AndroidCompositorWidgetInitData
|
struct AndroidCompositorWidgetInitData
|
||||||
{
|
{
|
||||||
int32_t widgetId;
|
int32_t widgetId;
|
||||||
|
LayoutDeviceIntSize clientSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
union CompositorWidgetInitData
|
union CompositorWidgetInitData
|
||||||
|
|
|
||||||
|
|
@ -2585,7 +2585,8 @@ void nsWindow::SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) {
|
||||||
|
|
||||||
void nsWindow::GetCompositorWidgetInitData(
|
void nsWindow::GetCompositorWidgetInitData(
|
||||||
mozilla::widget::CompositorWidgetInitData* aInitData) {
|
mozilla::widget::CompositorWidgetInitData* aInitData) {
|
||||||
*aInitData = mozilla::widget::AndroidCompositorWidgetInitData(mWidgetId);
|
*aInitData = mozilla::widget::AndroidCompositorWidgetInitData(
|
||||||
|
mWidgetId, GetClientSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool nsWindow::WidgetPaintsBackground() {
|
bool nsWindow::WidgetPaintsBackground() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue