You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Trac3r-rust/doc/wayland_client/protocol/wl_surface/trait.RequestsTrait.html

220 lines
36 KiB

5 years ago
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `RequestsTrait` trait in crate `wayland_client`."><meta name="keywords" content="rust, rustlang, rust-lang, RequestsTrait"><title>wayland_client::protocol::wl_surface::RequestsTrait - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc trait"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../wayland_client/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><p class='location'>Trait RequestsTrait</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#required-methods">Required Methods</a><div class="sidebar-links"><a href="#tymethod.attach">attach</a><a href="#tymethod.commit">commit</a><a href="#tymethod.damage">damage</a><a href="#tymethod.damage_buffer">damage_buffer</a><a href="#tymethod.destroy">destroy</a><a href="#tymethod.frame">frame</a><a href="#tymethod.set_buffer_scale">set_buffer_scale</a><a href="#tymethod.set_buffer_transform">set_buffer_transform</a><a href="#tymethod.set_input_region">set_input_region</a><a href="#tymethod.set_opaque_region">set_opaque_region</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class='location'><a href='../../index.html'>wayland_client</a>::<wbr><a href='../index.html'>protocol</a>::<wbr><a href='index.html'>wl_surface</a></p><script>window.sidebarCurrent = {name: 'RequestsTrait', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/wayland_client/home/mrh/source/Trac3r-rust/target/debug/build/wayland-client-893466244f089367/out/wayland_c_api.rs.html#1' title='goto source code'>[src]</a></span><span class='in-band'>Trait <a href='../../index.html'>wayland_client</a>::<wbr><a href='../index.html'>protocol</a>::<wbr><a href='index.html'>wl_surface</a>::<wbr><a class="trait" href=''>RequestsTrait</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust trait'>pub trait RequestsTrait {
fn <a href='#tymethod.destroy' class='fnname'>destroy</a>(&amp;self);
<div class='item-spacer'></div> fn <a href='#tymethod.attach' class='fnname'>attach</a>(&amp;self, buffer: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_buffer/struct.WlBuffer.html" title="struct wayland_client::protocol::wl_buffer::WlBuffer">WlBuffer</a>&gt;&gt;, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>);
<div class='item-spacer'></div> fn <a href='#tymethod.damage' class='fnname'>damage</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, width: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>);
<div class='item-spacer'></div> fn <a href='#tymethod.frame' class='fnname'>frame</a>&lt;F&gt;(&amp;self, implementor: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_callback/struct.WlCallback.html" title="struct wayland_client::protocol::wl_callback::WlCallback">WlCallback</a>&gt;, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;<br>&nbsp;&nbsp;&nbsp; <span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="struct" href="../../../wayland_client/struct.NewProxy.html" title="struct wayland_client::NewProxy">NewProxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_callback/struct.WlCallback.html" title="struct wayland_client::protocol::wl_callback::WlCallback">WlCallback</a>&gt;) -&gt; <a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_callback/struct.WlCallback.html" title="struct wayland_client::protocol::wl_callback::WlCallback">WlCallback</a>&gt;</span>;
<div class='item-spacer'></div> fn <a href='#tymethod.set_opaque_region' class='fnname'>set_opaque_region</a>(&amp;self, region: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_region/struct.WlRegion.html" title="struct wayland_client::protocol::wl_region::WlRegion">WlRegion</a>&gt;&gt;);
<div class='item-spacer'></div> fn <a href='#tymethod.set_input_region' class='fnname'>set_input_region</a>(&amp;self, region: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_region/struct.WlRegion.html" title="struct wayland_client::protocol::wl_region::WlRegion">WlRegion</a>&gt;&gt;);
<div class='item-spacer'></div> fn <a href='#tymethod.commit' class='fnname'>commit</a>(&amp;self);
<div class='item-spacer'></div> fn <a href='#tymethod.set_buffer_transform' class='fnname'>set_buffer_transform</a>(&amp;self, transform: <a class="enum" href="../../../wayland_client/protocol/wl_output/enum.Transform.html" title="enum wayland_client::protocol::wl_output::Transform">Transform</a>);
<div class='item-spacer'></div> fn <a href='#tymethod.set_buffer_scale' class='fnname'>set_buffer_scale</a>(&amp;self, scale: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>);
<div class='item-spacer'></div> fn <a href='#tymethod.damage_buffer' class='fnname'>damage_buffer</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, width: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>);
}</pre></div>
<h2 id='required-methods' class='small-section-header'>Required methods<a href='#required-methods' class='anchor'></a></h2><div class='methods'><h3 id='tymethod.destroy' class='method'><code id='destroy.v'>fn <a href='#tymethod.destroy' class='fnname'>destroy</a>(&amp;self)</code></h3><div class='docblock'><p>delete surface</p>
<p>Deletes the surface and invalidates its object ID.</p>
<p>This is a destructor, you cannot send requests to this object any longer once this method is called.</p>
</div><h3 id='tymethod.attach' class='method'><code id='attach.v'>fn <a href='#tymethod.attach' class='fnname'>attach</a>(&amp;self, buffer: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_buffer/struct.WlBuffer.html" title="struct wayland_client::protocol::wl_buffer::WlBuffer">WlBuffer</a>&gt;&gt;, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>)</code></h3><div class='docblock'><p>set the surface contents</p>
<p>Set a buffer as the content of this surface.</p>
<p>The new size of the surface is calculated based on the buffer
size transformed by the inverse buffer_transform and the
inverse buffer_scale. This means that the supplied buffer
must be an integer multiple of the buffer_scale.</p>
<p>The x and y arguments specify the location of the new pending
buffer's upper left corner, relative to the current buffer's upper
left corner, in surface-local coordinates. In other words, the
x and y, combined with the new surface size define in which
directions the surface's size changes.</p>
<p>Surface contents are double-buffered state, see wl_surface.commit.</p>
<p>The initial surface contents are void; there is no content.
wl_surface.attach assigns the given wl_buffer as the pending
wl_buffer. wl_surface.commit makes the pending wl_buffer the new
surface contents, and the size of the surface becomes the size
calculated from the wl_buffer, as described above. After commit,
there is no pending buffer until the next attach.</p>
<p>Committing a pending wl_buffer allows the compositor to read the
pixels in the wl_buffer. The compositor may access the pixels at
any time after the wl_surface.commit request. When the compositor
will not access the pixels anymore, it will send the
wl_buffer.release event. Only after receiving wl_buffer.release,
the client may reuse the wl_buffer. A wl_buffer that has been
attached and then replaced by another attach instead of committed
will not receive a release event, and is not used by the
compositor.</p>
<p>Destroying the wl_buffer after wl_buffer.release does not change
the surface contents. However, if the client destroys the
wl_buffer before receiving the wl_buffer.release event, the surface
contents become undefined immediately.</p>
<p>If wl_surface.attach is sent with a NULL wl_buffer, the
following wl_surface.commit will remove the surface content.</p>
</div><h3 id='tymethod.damage' class='method'><code id='damage.v'>fn <a href='#tymethod.damage' class='fnname'>damage</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, width: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>)</code></h3><div class='docblock'><p>mark part of the surface damaged</p>
<p>This request is used to describe the regions where the pending
buffer is different from the current surface contents, and where
the surface therefore needs to be repainted. The compositor
ignores the parts of the damage that fall outside of the surface.</p>
<p>Damage is double-buffered state, see wl_surface.commit.</p>
<p>The damage rectangle is specified in surface-local coordinates,
where x and y specify the upper left corner of the damage rectangle.</p>
<p>The initial value for pending damage is empty: no damage.
wl_surface.damage adds pending damage: the new pending damage
is the union of old pending damage and the given rectangle.</p>
<p>wl_surface.commit assigns pending damage as the current damage,
and clears pending damage. The server will clear the current
damage as it repaints the surface.</p>
<p>Alternatively, damage can be posted with wl_surface.damage_buffer
which uses buffer coordinates instead of surface coordinates,
and is probably the preferred and intuitive way of doing this.</p>
</div><h3 id='tymethod.frame' class='method'><code id='frame.v'>fn <a href='#tymethod.frame' class='fnname'>frame</a>&lt;F&gt;(&amp;self, implementor: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_callback/struct.WlCallback.html" title="struct wayland_client::protocol::wl_callback::WlCallback">WlCallback</a>&gt;, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="struct" href="../../../wayland_client/struct.NewProxy.html" title="struct wayland_client::NewProxy">NewProxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_callback/struct.WlCallback.html" title="struct wayland_client::protocol::wl_callback::WlCallback">WlCallback</a>&gt;) -&gt; <a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_callback/struct.WlCallback.html" title="struct wayland_client::protocol::wl_callback::WlCallback">WlCallback</a>&gt;,&nbsp;</span></code></h3><div class='docblock'><p>request a frame throttling hint</p>
<p>Request a notification when it is a good time to start drawing a new
frame, by creating a frame callback. This is useful for throttling
redrawing operations, and driving animations.</p>
<p>When a client is animating on a wl_surface, it can use the 'frame'
request to get notified when it is a good time to draw and commit the
next frame of animation. If the client commits an update earlier than
that, it is likely that some updates will not make it to the display,
and the client is wasting resources by drawing too often.</p>
<p>The frame request will take effect on the next wl_surface.commit.
The notification will only be posted for one frame unless
requested again. For a wl_surface, the notifications are posted in
the order the frame requests were committed.</p>
<p>The server must send the notifications so that a client
will not send excessive updates, while still allowing
the highest possible update rate for clients that wait for the reply
before drawing again. The server should give some time for the client
to draw and commit after sending the frame callback events to let it
hit the next output refresh.</p>
<p>A server should avoid signaling the frame callbacks if the
surface is not visible in any way, e.g. the surface is off-screen,
or completely obscured by other opaque surfaces.</p>
<p>The object returned by this request will be destroyed by the
compositor after the callback is fired and as such the client must not
attempt to use it after that point.</p>
<p>The callback_data passed in the callback is the current time, in
milliseconds, with an undefined base.</p>
</div><h3 id='tymethod.set_opaque_region' class='method'><code id='set_opaque_region.v'>fn <a href='#tymethod.set_opaque_region' class='fnname'>set_opaque_region</a>(&amp;self, region: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_region/struct.WlRegion.html" title="struct wayland_client::protocol::wl_region::WlRegion">WlRegion</a>&gt;&gt;)</code></h3><div class='docblock'><p>set opaque region</p>
<p>This request sets the region of the surface that contains
opaque content.</p>
<p>The opaque region is an optimization hint for the compositor
that lets it optimize the redrawing of content behind opaque
regions. Setting an opaque region is not required for correct
behaviour, but marking transparent content as opaque will result
in repaint artifacts.</p>
<p>The opaque region is specified in surface-local coordinates.</p>
<p>The compositor ignores the parts of the opaque region that fall
outside of the surface.</p>
<p>Opaque region is double-buffered state, see wl_surface.commit.</p>
<p>wl_surface.set_opaque_region changes the pending opaque region.
wl_surface.commit copies the pending region to the current region.
Otherwise, the pending and current regions are never changed.</p>
<p>The initial value for an opaque region is empty. Setting the pending
opaque region has copy semantics, and the wl_region object can be
destroyed immediately. A NULL wl_region causes the pending opaque
region to be set to empty.</p>
</div><h3 id='tymethod.set_input_region' class='method'><code id='set_input_region.v'>fn <a href='#tymethod.set_input_region' class='fnname'>set_input_region</a>(&amp;self, region: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_region/struct.WlRegion.html" title="struct wayland_client::protocol::wl_region::WlRegion">WlRegion</a>&gt;&gt;)</code></h3><div class='docblock'><p>set input region</p>
<p>This request sets the region of the surface that can receive
pointer and touch events.</p>
<p>Input events happening outside of this region will try the next
surface in the server surface stack. The compositor ignores the
parts of the input region that fall outside of the surface.</p>
<p>The input region is specified in surface-local coordinates.</p>
<p>Input region is double-buffered state, see wl_surface.commit.</p>
<p>wl_surface.set_input_region changes the pending input region.
wl_surface.commit copies the pending region to the current region.
Otherwise the pending and current regions are never changed,
except cursor and icon surfaces are special cases, see
wl_pointer.set_cursor and wl_data_device.start_drag.</p>
<p>The initial value for an input region is infinite. That means the
whole surface will accept input. Setting the pending input region
has copy semantics, and the wl_region object can be destroyed
immediately. A NULL wl_region causes the input region to be set
to infinite.</p>
</div><h3 id='tymethod.commit' class='method'><code id='commit.v'>fn <a href='#tymethod.commit' class='fnname'>commit</a>(&amp;self)</code></h3><div class='docblock'><p>commit pending surface state</p>
<p>Surface state (input, opaque, and damage regions, attached buffers,
etc.) is double-buffered. Protocol requests modify the pending state,
as opposed to the current state in use by the compositor. A commit
request atomically applies all pending state, replacing the current
state. After commit, the new pending state is as documented for each
related request.</p>
<p>On commit, a pending wl_buffer is applied first, and all other state
second. This means that all coordinates in double-buffered state are
relative to the new wl_buffer coming into use, except for
wl_surface.attach itself. If there is no pending wl_buffer, the
coordinates are relative to the current surface contents.</p>
<p>All requests that need a commit to become effective are documented
to affect double-buffered state.</p>
<p>Other interfaces may add further double-buffered surface state.</p>
</div><h3 id='tymethod.set_buffer_transform' class='method'><code id='set_buffer_transform.v'>fn <a href='#tymethod.set_buffer_transform' class='fnname'>set_buffer_transform</a>(&amp;self, transform: <a class="enum" href="../../../wayland_client/protocol/wl_output/enum.Transform.html" title="enum wayland_client::protocol::wl_output::Transform">Transform</a>)</code></h3><div class='docblock'><p>sets the buffer transformation</p>
<p>This request sets an optional transformation on how the compositor
interprets the contents of the buffer attached to the surface. The
accepted values for the transform parameter are the values for
wl_output.transform.</p>
<p>Buffer transform is double-buffered state, see wl_surface.commit.</p>
<p>A newly created surface has its buffer transformation set to normal.</p>
<p>wl_surface.set_buffer_transform changes the pending buffer
transformation. wl_surface.commit copies the pending buffer
transformation to the current one. Otherwise, the pending and current
values are never changed.</p>
<p>The purpose of this request is to allow clients to render content
according to the output transform, thus permitting the compositor to
use certain optimizations even if the display is rotated. Using
hardware overlays and scanning out a client buffer for fullscreen
surfaces are examples of such optimizations. Those optimizations are
highly dependent on the compositor implementation, so the use of this
request should be considered on a case-by-case basis.</p>
<p>Note that if the transform value includes 90 or 270 degree rotation,
the width of the buffer will become the surface height and the height
of the buffer will become the surface width.</p>
<p>If transform is not one of the values from the
wl_output.transform enum the invalid_transform protocol error
is raised.</p>
<p>Only available since version 2 of the interface.</p>
</div><h3 id='tymethod.set_buffer_scale' class='method'><code id='set_buffer_scale.v'>fn <a href='#tymethod.set_buffer_scale' class='fnname'>set_buffer_scale</a>(&amp;self, scale: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>)</code></h3><div class='docblock'><p>sets the buffer scaling factor</p>
<p>This request sets an optional scaling factor on how the compositor
interprets the contents of the buffer attached to the window.</p>
<p>Buffer scale is double-buffered state, see wl_surface.commit.</p>
<p>A newly created surface has its buffer scale set to 1.</p>
<p>wl_surface.set_buffer_scale changes the pending buffer scale.
wl_surface.commit copies the pending buffer scale to the current one.
Otherwise, the pending and current values are never changed.</p>
<p>The purpose of this request is to allow clients to supply higher
resolution buffer data for use on high resolution outputs. It is
intended that you pick the same buffer scale as the scale of the
output that the surface is displayed on. This means the compositor
can avoid scaling when rendering the surface on that output.</p>
<p>Note that if the scale is larger than 1, then you have to attach
a buffer that is larger (by a factor of scale in each dimension)
than the desired surface size.</p>
<p>If scale is not positive the invalid_scale protocol error is
raised.</p>
<p>Only available since version 3 of the interface.</p>
</div><h3 id='tymethod.damage_buffer' class='method'><code id='damage_buffer.v'>fn <a href='#tymethod.damage_buffer' class='fnname'>damage_buffer</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, width: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>)</code></h3><div class='docblock'><p>mark part of the surface damaged using buffer coordinates</p>
<p>This request is used to describe the regions where the pending
buffer is different from the current surface contents, and where
the surface therefore needs to be repainted. The compositor
ignores the parts of the damage that fall outside of the surface.</p>
<p>Damage is double-buffered state, see wl_surface.commit.</p>
<p>The damage rectangle is specified in buffer coordinates,
where x and y specify the upper left corner of the damage rectangle.</p>
<p>The initial value for pending damage is empty: no damage.
wl_surface.damage_buffer adds pending damage: the new pending
damage is the union of old pending damage and the given rectangle.</p>
<p>wl_surface.commit assigns pending damage as the current damage,
and clears pending damage. The server will clear the current
damage as it repaints the surface.</p>
<p>This request differs from wl_surface.damage in only one way - it
takes damage in buffer coordinates instead of surface-local
coordinates. While this generally is more intuitive than surface
coordinates, it is especially desirable when using wp_viewport
or when a drawing library (like EGL) is unaware of buffer scale
and buffer transform.</p>
<p>Note: Because buffer transformation changes and damage requests may
be interleaved in the protocol stream, it is impossible to determine
the actual mapping between surface and buffer damage until
wl_surface.commit time. Therefore, compositors wishing to take both
kinds of damage into account will have to accumulate damage from the
two requests separately and only transform from one to the other
after receiving the wl_surface.commit.</p>
<p>Only available since version 4 of the interface.</p>
</div></div><span class='loading-content'>Loading content...</span>
<h2 id='implementors' class='small-section-header'>Implementors<a href='#implementors' class='anchor'></a></h2><div class='item-list' id='implementors-list'><h3 id='impl-RequestsTrait' class='impl'><code class='in-band'>impl RequestsTrait for <a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_surface/struct.WlSurface.html" title="struct wayland_client::protocol::wl_surface::WlSurface">WlSurface</a>&gt;</code><a href='#impl-RequestsTrait' class='anchor'></a><a class='srclink' href='../../../src/wayland_client/home/mrh/source/Trac3r-rust/target/debug/build/wayland-client-893466244f089367/out/wayland_c_api.rs.html#1' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.destroy' class="method hidden"><code id='destroy.v-1'>fn <a href='#method.destroy' class='fnname'>destroy</a>(&amp;self)</code><a class='srclink' href='../../../src/wayland_client/home/mrh/source/Trac3r-rust/target/debug/build/wayland-client-893466244f089367/out/wayland_c_api.rs.html#1' title='goto source code'>[src]</a></h4><h4 id='method.attach' class="method hidden"><code id='attach.v-1'>fn <a href='#method.attach' class='fnname'>attach</a>(&amp;self, buffer: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_buffer/struct.WlBuffer.html" title="struct wayland_client::protocol::wl_buffer::WlBuffer">WlBuffer</a>&gt;&gt;, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>)</code><a class='srclink' href='../../../src/wayland_client/home/mrh/source/Trac3r-rust/target/debug/build/wayland-client-893466244f089367/out/wayland_c_api.rs.html#1' title='goto source code'>[src]</a></h4><h4 id='method.damage' class="method hidden"><code id='damage.v-1'>fn <a href='#method.damage' class='fnname'>damage</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, width: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>)</code><a class='srclink' href='../../../src/wayland_client/home/mrh/source/Trac3r-rust/target/debug/build/wayland-client-893466244f089367/out/wayland_c_api.rs.html#1' title='goto source code'>[src]</a></h4><h4 id='method.frame' class="method hidden"><code id='frame.v-1'>fn <a href='#method.frame' class='fnname'>frame</a>&lt;F&gt;(&amp;self, implementor: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../../../wayland_client/struct.Proxy.html" title="struct wayland_client::Proxy">Proxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_callback/struct.WlCallback.html" title="struct wayland_client::protocol::wl_callback::WlCallback">WlCallback</a>&gt;, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="struct" href="../../../wayland_client/struct.NewProxy.html" title="struct wayland_client::NewProxy">NewProxy</a>&lt;<a class="struct" href="../../../wayland_client/protocol/wl_callback/struct.WlCallback.html" title="struct wayland_client::protocol::wl_callback::WlCallback">WlCallback</a>&gt;) -&gt; <a class="struct"
src="../../../implementors/wayland_client/protocol/wl_surface/trait.RequestsTrait.js">
</script></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../";window.currentCrate = "wayland_client";</script><script src="../../../aliases.js"></script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>