hal/moz.build
author Kartikaya Gupta <kgupta@mozilla.com>
Mon, 31 Jul 2017 15:27:29 -0400
changeset 423152 509e1cc89fb526ff0b232f9ed3a49127e84bdd7c
parent 411326 cf8d4410435f5f5d61c53fbff9cf8cec1791e943
child 424380 615e7773cd68625b1d8ce9c22df7186c7ae921ca
permissions -rw-r--r--
Bug 1384616 - Change how display items put their APZ-relevant info into the WebRenderScrollData. r=jrmuizel Instead of the WebRenderLayerScrollData code knowing about all the different display item types, it makes more sense to move this logic into the display items. In addition to avoiding dis-encapsulating the data from nsDisplayItem subclasses, this makes it easier to handle two specific scenarios: (1) the case where an nsDisplayItem A subclasses another nsDisplayItem B, but A and B have different types returned by GetType(). Previously A and B would have to be handled explicitly in the WebRenderLayerScrollData switch statements, which doesn't scale well if new types are added. With the new approach the virtual function is shared down from A to B and so takes care of it. This is particularly relevant for types like nsDisplayOwnLayer which have a number of subclasses. (2) the case where a display item *might* have APZ-relevant information. In this case the type of the item alone is not sufficient to determine if we need to create a new WebRenderLayerScrollData for it. Instead, we need to access specific state inside the display item. This is now handled by the UpdateScrollData function returning true when passed nullptr arguments, and replaces the switch statement in WebRenderLayerManager that updated forceNewLayerData. MozReview-Commit-ID: FlfHlgSccSn

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
with Files('**'):
    BUG_COMPONENT = ('Core', 'Hardware Abstraction Layer (HAL)')

EXPORTS.mozilla += [
    'Hal.h',
    'HalImpl.h',
    'HalSandbox.h',
    'HalScreenConfiguration.h',
    'HalSensor.h',
    'HalTypes.h',
    'HalWakeLock.h',
]

EXPORTS.mozilla.fallback += [
    'fallback/FallbackScreenConfiguration.h',
]

UNIFIED_SOURCES += [
    'HalWakeLock.cpp',
    'sandbox/SandboxHal.cpp',
    'WindowIdentifier.cpp',
]

# Hal.cpp cannot be built in unified mode because it relies on HalImpl.h.
SOURCES += [
    'Hal.cpp',
]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
    LOCAL_INCLUDES += [
        '/widget/android',
    ]
    UNIFIED_SOURCES += [
        'android/AndroidSensor.cpp',
        'fallback/FallbackPower.cpp',
        'linux/LinuxMemory.cpp',
    ]
    # AndroidHal.cpp cannot be built in unified mode because it relies on HalImpl.h.
    SOURCES += [
        'android/AndroidHal.cpp',
    ]
elif CONFIG['OS_TARGET'] == 'Linux':
    UNIFIED_SOURCES += [
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackSensor.cpp',
        'fallback/FallbackVibration.cpp',
        'linux/LinuxMemory.cpp',
        'linux/LinuxPower.cpp',
    ]
    if CONFIG['MOZ_ENABLE_DBUS']:
        UNIFIED_SOURCES += [
            'linux/UPowerClient.cpp',
        ]
    else:
        UNIFIED_SOURCES += [
            'fallback/FallbackBattery.cpp',
        ]
elif CONFIG['OS_TARGET'] == 'WINNT':
    UNIFIED_SOURCES += [
        'fallback/FallbackMemory.cpp',
        'fallback/FallbackPower.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackVibration.cpp',
        'windows/WindowsSensor.cpp',
    ]
    # WindowsBattery.cpp cannot be built in unified mode because it relies on HalImpl.h.
    SOURCES += [
        'windows/WindowsBattery.cpp',
    ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    UNIFIED_SOURCES += [
        'cocoa/CocoaBattery.cpp',
        'fallback/FallbackMemory.cpp',
        'fallback/FallbackPower.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackVibration.cpp',
    ]
elif CONFIG['OS_TARGET'] in ('OpenBSD', 'NetBSD', 'FreeBSD', 'DragonFly'):
    UNIFIED_SOURCES += [
        'fallback/FallbackMemory.cpp',
        'fallback/FallbackPower.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackSensor.cpp',
        'fallback/FallbackVibration.cpp',
    ]
    if CONFIG['MOZ_ENABLE_DBUS']:
        UNIFIED_SOURCES += [
            'linux/UPowerClient.cpp',
        ]
    else:
        UNIFIED_SOURCES += [
            'fallback/FallbackBattery.cpp',
        ]
else:
    UNIFIED_SOURCES += [
        'fallback/FallbackBattery.cpp',
        'fallback/FallbackMemory.cpp',
        'fallback/FallbackPower.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackSensor.cpp',
        'fallback/FallbackVibration.cpp',
    ]

# Fallbacks for backends implemented on Gonk only.
UNIFIED_SOURCES += [
    'fallback/FallbackDiskSpaceWatcher.cpp',
    'fallback/FallbackFactoryReset.cpp',
    'fallback/FallbackProcessPriority.cpp',
    'fallback/FallbackScreenPower.cpp',
    'fallback/FallbackSwitch.cpp',
    'fallback/FallbackSystemService.cpp',
    'fallback/FallbackThreadPriority.cpp',
    'fallback/FallbackTime.cpp',
    'fallback/FallbackWakeLocks.cpp',
]

# Fallbacks for backends implemented on Android only.
if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
    UNIFIED_SOURCES += [
        'fallback/FallbackNetwork.cpp',
    ]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    UNIFIED_SOURCES += [
        'cocoa/CocoaSensor.mm',
        'cocoa/smslib.mm',
    ]

IPDL_SOURCES = [
    'sandbox/PHal.ipdl',
]

include('/ipc/chromium/chromium-config.mozbuild')

FINAL_LIBRARY = 'xul'

LOCAL_INCLUDES += [
    '/dom/base',
]

CFLAGS += CONFIG['GLIB_CFLAGS']
CFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
CXXFLAGS += CONFIG['GLIB_CFLAGS']
CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']