--- a/gfx/webrender_bindings/WebRenderAPI.cpp
+++ b/gfx/webrender_bindings/WebRenderAPI.cpp
@@ -132,23 +132,21 @@ private:
layers::SynchronousTask* mTask;
};
TransactionBuilder::TransactionBuilder(bool aUseSceneBuilderThread)
: mUseSceneBuilderThread(gfxPrefs::WebRenderAsyncSceneBuild() && aUseSceneBuilderThread)
{
mTxn = wr_transaction_new(mUseSceneBuilderThread);
- mResourceUpdates = wr_resource_updates_new();
}
TransactionBuilder::~TransactionBuilder()
{
wr_transaction_delete(mTxn);
- wr_resource_updates_delete(mResourceUpdates);
}
void
TransactionBuilder::UpdateEpoch(PipelineId aPipelineId, Epoch aEpoch)
{
wr_transaction_update_epoch(mTxn, aPipelineId, aEpoch);
}
@@ -345,17 +343,16 @@ WebRenderAPI::~WebRenderAPI()
}
wr_api_delete(mDocHandle);
}
void
WebRenderAPI::SendTransaction(TransactionBuilder& aTxn)
{
- wr_transaction_update_resources(aTxn.Raw(), aTxn.RawUpdates());
wr_api_send_transaction(mDocHandle, aTxn.Raw(), aTxn.UseSceneBuilderThread());
}
bool
WebRenderAPI::HitTest(const wr::WorldPoint& aPoint,
wr::WrPipelineId& aOutPipelineId,
layers::FrameMetrics::ViewID& aOutScrollId,
gfx::CompositorHitTestInfo& aOutHitInfo)
@@ -543,47 +540,47 @@ WebRenderAPI::Capture()
printf("%s Capturing WR state to: %s\n%s", border, path, border);
wr_api_capture(mDocHandle, path, bits);
}
void
TransactionBuilder::Clear()
{
- wr_resource_updates_clear(mResourceUpdates);
+ wr_resource_updates_clear(mTxn);
}
void
TransactionBuilder::AddImage(ImageKey key, const ImageDescriptor& aDescriptor,
wr::Vec<uint8_t>& aBytes)
{
- wr_resource_updates_add_image(mResourceUpdates,
+ wr_resource_updates_add_image(mTxn,
key,
&aDescriptor,
&aBytes.inner);
}
void
TransactionBuilder::AddBlobImage(ImageKey key, const ImageDescriptor& aDescriptor,
wr::Vec<uint8_t>& aBytes)
{
- wr_resource_updates_add_blob_image(mResourceUpdates,
+ wr_resource_updates_add_blob_image(mTxn,
key,
&aDescriptor,
&aBytes.inner);
}
void
TransactionBuilder::AddExternalImage(ImageKey key,
const ImageDescriptor& aDescriptor,
ExternalImageId aExtID,
wr::WrExternalImageBufferType aBufferType,
uint8_t aChannelIndex)
{
- wr_resource_updates_add_external_image(mResourceUpdates,
+ wr_resource_updates_add_external_image(mTxn,
key,
&aDescriptor,
aExtID,
aBufferType,
aChannelIndex);
}
void
@@ -597,91 +594,91 @@ TransactionBuilder::AddExternalImageBuff
channelIndex);
}
void
TransactionBuilder::UpdateImageBuffer(ImageKey aKey,
const ImageDescriptor& aDescriptor,
wr::Vec<uint8_t>& aBytes)
{
- wr_resource_updates_update_image(mResourceUpdates,
+ wr_resource_updates_update_image(mTxn,
aKey,
&aDescriptor,
&aBytes.inner);
}
void
TransactionBuilder::UpdateBlobImage(ImageKey aKey,
const ImageDescriptor& aDescriptor,
wr::Vec<uint8_t>& aBytes,
const wr::DeviceUintRect& aDirtyRect)
{
- wr_resource_updates_update_blob_image(mResourceUpdates,
+ wr_resource_updates_update_blob_image(mTxn,
aKey,
&aDescriptor,
&aBytes.inner,
aDirtyRect);
}
void
TransactionBuilder::UpdateExternalImage(ImageKey aKey,
const ImageDescriptor& aDescriptor,
ExternalImageId aExtID,
wr::WrExternalImageBufferType aBufferType,
uint8_t aChannelIndex)
{
- wr_resource_updates_update_external_image(mResourceUpdates,
+ wr_resource_updates_update_external_image(mTxn,
aKey,
&aDescriptor,
aExtID,
aBufferType,
aChannelIndex);
}
void
TransactionBuilder::DeleteImage(ImageKey aKey)
{
- wr_resource_updates_delete_image(mResourceUpdates, aKey);
+ wr_resource_updates_delete_image(mTxn, aKey);
}
void
TransactionBuilder::AddRawFont(wr::FontKey aKey, wr::Vec<uint8_t>& aBytes, uint32_t aIndex)
{
- wr_resource_updates_add_raw_font(mResourceUpdates, aKey, &aBytes.inner, aIndex);
+ wr_resource_updates_add_raw_font(mTxn, aKey, &aBytes.inner, aIndex);
}
void
TransactionBuilder::AddFontDescriptor(wr::FontKey aKey, wr::Vec<uint8_t>& aBytes, uint32_t aIndex)
{
- wr_resource_updates_add_font_descriptor(mResourceUpdates, aKey, &aBytes.inner, aIndex);
+ wr_resource_updates_add_font_descriptor(mTxn, aKey, &aBytes.inner, aIndex);
}
void
TransactionBuilder::DeleteFont(wr::FontKey aKey)
{
- wr_resource_updates_delete_font(mResourceUpdates, aKey);
+ wr_resource_updates_delete_font(mTxn, aKey);
}
void
TransactionBuilder::AddFontInstance(wr::FontInstanceKey aKey,
wr::FontKey aFontKey,
float aGlyphSize,
const wr::FontInstanceOptions* aOptions,
const wr::FontInstancePlatformOptions* aPlatformOptions,
wr::Vec<uint8_t>& aVariations)
{
- wr_resource_updates_add_font_instance(mResourceUpdates, aKey, aFontKey, aGlyphSize,
+ wr_resource_updates_add_font_instance(mTxn, aKey, aFontKey, aGlyphSize,
aOptions, aPlatformOptions,
&aVariations.inner);
}
void
TransactionBuilder::DeleteFontInstance(wr::FontInstanceKey aKey)
{
- wr_resource_updates_delete_font_instance(mResourceUpdates, aKey);
+ wr_resource_updates_delete_font_instance(mTxn, aKey);
}
class FrameStartTime : public RendererEvent
{
public:
explicit FrameStartTime(const TimeStamp& aTime)
: mTime(aTime)
{
--- a/gfx/webrender_bindings/WebRenderAPI.h
+++ b/gfx/webrender_bindings/WebRenderAPI.h
@@ -134,21 +134,19 @@ public:
wr::Vec<uint8_t>& aVariations);
void DeleteFontInstance(wr::FontInstanceKey aKey);
void Clear();
bool UseSceneBuilderThread() const { return mUseSceneBuilderThread; }
Transaction* Raw() { return mTxn; }
- wr::ResourceUpdates* RawUpdates() { return mResourceUpdates; }
protected:
bool mUseSceneBuilderThread;
Transaction* mTxn;
- wr::ResourceUpdates* mResourceUpdates;
};
class TransactionWrapper
{
public:
explicit TransactionWrapper(Transaction* aTxn);
void AppendTransformProperties(const nsTArray<wr::WrTransformProperty>& aTransformArray);
--- a/gfx/webrender_bindings/src/bindings.rs
+++ b/gfx/webrender_bindings/src/bindings.rs
@@ -1067,27 +1067,16 @@ pub extern "C" fn wr_transaction_set_dis
color,
LayoutSize::new(viewport_width, viewport_height),
(pipeline_id, content_size, dl),
preserve_frame_state,
);
}
#[no_mangle]
-pub extern "C" fn wr_transaction_update_resources(
- txn: &mut Transaction,
- resource_updates: &mut ResourceUpdates
-) {
- if resource_updates.updates.is_empty() {
- return;
- }
- txn.update_resources(mem::replace(resource_updates, ResourceUpdates::new()));
-}
-
-#[no_mangle]
pub extern "C" fn wr_transaction_set_window_parameters(
txn: &mut Transaction,
window_size: &DeviceUintSize,
doc_rect: &DeviceUintRect,
) {
txn.set_window_parameters(
*window_size,
*doc_rect,
@@ -1178,127 +1167,127 @@ pub extern "C" fn wr_transaction_scroll_
new_scroll_origin: LayoutPoint
) {
let scroll_id = ExternalScrollId(scroll_id, pipeline_id);
txn.scroll_node_with_id(new_scroll_origin, scroll_id, ScrollClamping::NoClamping);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_add_image(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
image_key: WrImageKey,
descriptor: &WrImageDescriptor,
bytes: &mut WrVecU8,
) {
- resources.add_image(
+ txn.add_image(
image_key,
descriptor.into(),
ImageData::new(bytes.flush_into_vec()),
None
);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_add_blob_image(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
image_key: WrImageKey,
descriptor: &WrImageDescriptor,
bytes: &mut WrVecU8,
) {
- resources.add_image(
+ txn.add_image(
image_key,
descriptor.into(),
ImageData::new_blob_image(bytes.flush_into_vec()),
None
);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_add_external_image(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
image_key: WrImageKey,
descriptor: &WrImageDescriptor,
external_image_id: WrExternalImageId,
buffer_type: WrExternalImageBufferType,
channel_index: u8
) {
- resources.add_image(
+ txn.add_image(
image_key,
descriptor.into(),
ImageData::External(
ExternalImageData {
id: external_image_id.into(),
channel_index: channel_index,
image_type: buffer_type.to_wr(),
}
),
None
);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_update_image(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
key: WrImageKey,
descriptor: &WrImageDescriptor,
bytes: &mut WrVecU8,
) {
- resources.update_image(
+ txn.update_image(
key,
descriptor.into(),
ImageData::new(bytes.flush_into_vec()),
None
);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_update_external_image(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
key: WrImageKey,
descriptor: &WrImageDescriptor,
external_image_id: WrExternalImageId,
image_type: WrExternalImageBufferType,
channel_index: u8
) {
- resources.update_image(
+ txn.update_image(
key,
descriptor.into(),
ImageData::External(
ExternalImageData {
id: external_image_id.into(),
channel_index,
image_type: image_type.to_wr(),
}
),
None
);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_update_blob_image(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
image_key: WrImageKey,
descriptor: &WrImageDescriptor,
bytes: &mut WrVecU8,
dirty_rect: DeviceUintRect,
) {
- resources.update_image(
+ txn.update_image(
image_key,
descriptor.into(),
ImageData::new_blob_image(bytes.flush_into_vec()),
Some(dirty_rect)
);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_delete_image(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
key: WrImageKey
) {
- resources.delete_image(key);
+ txn.delete_image(key);
}
#[no_mangle]
pub extern "C" fn wr_api_send_transaction(
dh: &mut DocumentHandle,
transaction: &mut Transaction,
is_async: bool
) {
@@ -1334,22 +1323,22 @@ pub extern "C" fn wr_api_send_external_e
evt: usize) {
assert!(unsafe { !is_in_render_thread() });
dh.api.send_external_event(ExternalEvent::from_raw(evt));
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_add_raw_font(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
key: WrFontKey,
bytes: &mut WrVecU8,
index: u32
) {
- resources.add_raw_font(key, bytes.flush_into_vec(), index);
+ txn.add_raw_font(key, bytes.flush_into_vec(), index);
}
#[no_mangle]
pub extern "C" fn wr_api_capture(
dh: &mut DocumentHandle,
path: *const c_char,
bits_raw: u32,
) {
@@ -1409,78 +1398,64 @@ fn read_font_descriptor(
NativeFontHandle {
pathname: String::from(cstr.to_str().unwrap()),
index,
}
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_add_font_descriptor(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
key: WrFontKey,
bytes: &mut WrVecU8,
index: u32
) {
let native_font_handle = read_font_descriptor(bytes, index);
- resources.add_native_font(key, native_font_handle);
+ txn.add_native_font(key, native_font_handle);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_delete_font(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
key: WrFontKey
) {
- resources.delete_font(key);
+ txn.delete_font(key);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_add_font_instance(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
key: WrFontInstanceKey,
font_key: WrFontKey,
glyph_size: f32,
options: *const FontInstanceOptions,
platform_options: *const FontInstancePlatformOptions,
variations: &mut WrVecU8,
) {
- resources.add_font_instance(
+ txn.add_font_instance(
key,
font_key,
Au::from_f32_px(glyph_size),
unsafe { options.as_ref().cloned() },
unsafe { platform_options.as_ref().cloned() },
variations.convert_into_vec::<FontVariation>(),
);
}
#[no_mangle]
pub extern "C" fn wr_resource_updates_delete_font_instance(
- resources: &mut ResourceUpdates,
+ txn: &mut Transaction,
key: WrFontInstanceKey
) {
- resources.delete_font_instance(key);
+ txn.delete_font_instance(key);
}
#[no_mangle]
-pub extern "C" fn wr_resource_updates_new() -> *mut ResourceUpdates {
- let updates = Box::new(ResourceUpdates::new());
- Box::into_raw(updates)
-}
-
-#[no_mangle]
-pub extern "C" fn wr_resource_updates_clear(resources: &mut ResourceUpdates) {
- resources.updates.clear();
-}
-
-/// cbindgen:postfix=WR_DESTRUCTOR_SAFE_FUNC
-#[no_mangle]
-pub extern "C" fn wr_resource_updates_delete(updates: *mut ResourceUpdates) {
- unsafe {
- Box::from_raw(updates);
- }
+pub extern "C" fn wr_resource_updates_clear(txn: &mut Transaction) {
+ txn.resource_updates.clear();
}
#[no_mangle]
pub unsafe extern "C" fn wr_api_get_namespace(dh: &mut DocumentHandle) -> WrIdNamespace {
dh.api.get_namespace_id()
}
#[no_mangle]
--- a/gfx/webrender_bindings/webrender_ffi_generated.h
+++ b/gfx/webrender_bindings/webrender_ffi_generated.h
@@ -1474,108 +1474,100 @@ void wr_renderer_update(Renderer *aRende
WR_FUNC;
WR_INLINE
void wr_renderer_update_program_cache(Renderer *aRenderer,
WrProgramCache *aProgramCache)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_add_blob_image(ResourceUpdates *aResources,
+void wr_resource_updates_add_blob_image(Transaction *aTxn,
WrImageKey aImageKey,
const WrImageDescriptor *aDescriptor,
WrVecU8 *aBytes)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_add_external_image(ResourceUpdates *aResources,
+void wr_resource_updates_add_external_image(Transaction *aTxn,
WrImageKey aImageKey,
const WrImageDescriptor *aDescriptor,
WrExternalImageId aExternalImageId,
WrExternalImageBufferType aBufferType,
uint8_t aChannelIndex)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_add_font_descriptor(ResourceUpdates *aResources,
+void wr_resource_updates_add_font_descriptor(Transaction *aTxn,
WrFontKey aKey,
WrVecU8 *aBytes,
uint32_t aIndex)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_add_font_instance(ResourceUpdates *aResources,
+void wr_resource_updates_add_font_instance(Transaction *aTxn,
WrFontInstanceKey aKey,
WrFontKey aFontKey,
float aGlyphSize,
const FontInstanceOptions *aOptions,
const FontInstancePlatformOptions *aPlatformOptions,
WrVecU8 *aVariations)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_add_image(ResourceUpdates *aResources,
+void wr_resource_updates_add_image(Transaction *aTxn,
WrImageKey aImageKey,
const WrImageDescriptor *aDescriptor,
WrVecU8 *aBytes)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_add_raw_font(ResourceUpdates *aResources,
+void wr_resource_updates_add_raw_font(Transaction *aTxn,
WrFontKey aKey,
WrVecU8 *aBytes,
uint32_t aIndex)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_clear(ResourceUpdates *aResources)
+void wr_resource_updates_clear(Transaction *aTxn)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_delete(ResourceUpdates *aUpdates)
-WR_DESTRUCTOR_SAFE_FUNC;
-
-WR_INLINE
-void wr_resource_updates_delete_font(ResourceUpdates *aResources,
+void wr_resource_updates_delete_font(Transaction *aTxn,
WrFontKey aKey)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_delete_font_instance(ResourceUpdates *aResources,
+void wr_resource_updates_delete_font_instance(Transaction *aTxn,
WrFontInstanceKey aKey)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_delete_image(ResourceUpdates *aResources,
+void wr_resource_updates_delete_image(Transaction *aTxn,
WrImageKey aKey)
WR_FUNC;
WR_INLINE
-ResourceUpdates *wr_resource_updates_new()
-WR_FUNC;
-
-WR_INLINE
-void wr_resource_updates_update_blob_image(ResourceUpdates *aResources,
+void wr_resource_updates_update_blob_image(Transaction *aTxn,
WrImageKey aImageKey,
const WrImageDescriptor *aDescriptor,
WrVecU8 *aBytes,
DeviceUintRect aDirtyRect)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_update_external_image(ResourceUpdates *aResources,
+void wr_resource_updates_update_external_image(Transaction *aTxn,
WrImageKey aKey,
const WrImageDescriptor *aDescriptor,
WrExternalImageId aExternalImageId,
WrExternalImageBufferType aImageType,
uint8_t aChannelIndex)
WR_FUNC;
WR_INLINE
-void wr_resource_updates_update_image(ResourceUpdates *aResources,
+void wr_resource_updates_update_image(Transaction *aTxn,
WrImageKey aKey,
const WrImageDescriptor *aDescriptor,
WrVecU8 *aBytes)
WR_FUNC;
WR_INLINE
uintptr_t wr_root_scroll_node_id()
WR_FUNC;
@@ -1679,21 +1671,16 @@ WR_FUNC;
WR_INLINE
void wr_transaction_update_epoch(Transaction *aTxn,
WrPipelineId aPipelineId,
WrEpoch aEpoch)
WR_FUNC;
WR_INLINE
-void wr_transaction_update_resources(Transaction *aTxn,
- ResourceUpdates *aResourceUpdates)
-WR_FUNC;
-
-WR_INLINE
void wr_vec_u8_free(WrVecU8 aV)
WR_FUNC;
WR_INLINE
void wr_vec_u8_push_bytes(WrVecU8 *aV,
ByteSlice aBytes)
WR_FUNC;