1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
13pub enum PowerMode {
14 Off,
19 On,
23 Doze,
30 DozeSuspend,
43 #[doc(hidden)]
44 __SourceBreaking { unknown_ordinal: u32 },
45}
46
47#[macro_export]
49macro_rules! PowerModeUnknown {
50 () => {
51 _
52 };
53}
54
55impl PowerMode {
56 #[inline]
57 pub fn from_primitive(prim: u32) -> Option<Self> {
58 match prim {
59 0 => Some(Self::Off),
60 1 => Some(Self::On),
61 2 => Some(Self::Doze),
62 3 => Some(Self::DozeSuspend),
63 _ => None,
64 }
65 }
66
67 #[inline]
68 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
69 match prim {
70 0 => Self::Off,
71 1 => Self::On,
72 2 => Self::Doze,
73 3 => Self::DozeSuspend,
74 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
75 }
76 }
77
78 #[inline]
79 pub fn unknown() -> Self {
80 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
81 }
82
83 #[inline]
84 pub const fn into_primitive(self) -> u32 {
85 match self {
86 Self::Off => 0,
87 Self::On => 1,
88 Self::Doze => 2,
89 Self::DozeSuspend => 3,
90 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
91 }
92 }
93
94 #[inline]
95 pub fn is_unknown(&self) -> bool {
96 match self {
97 Self::__SourceBreaking { unknown_ordinal: _ } => true,
98 _ => false,
99 }
100 }
101}
102
103#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
104pub struct DisplayPowerSetPowerModeRequest {
105 pub power_mode: PowerMode,
109}
110
111impl fidl::Persistable for DisplayPowerSetPowerModeRequest {}
112
113#[derive(Clone, Debug, PartialEq)]
114pub struct InfoGetMetricsResponse {
115 pub info: Metrics,
116}
117
118impl fidl::Persistable for InfoGetMetricsResponse {}
119
120#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
121#[repr(C)]
122pub struct VsyncSourceOnVsyncRequest {
123 pub timestamp: i64,
127}
128
129impl fidl::Persistable for VsyncSourceOnVsyncRequest {}
130
131#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
132pub struct VsyncSourceSetVsyncEnabledRequest {
133 pub enabled: bool,
134}
135
136impl fidl::Persistable for VsyncSourceSetVsyncEnabledRequest {}
137
138#[derive(Clone, Debug, Default, PartialEq)]
140pub struct Metrics {
141 pub extent_in_px: Option<fidl_fuchsia_math__common::SizeU>,
144 pub extent_in_mm: Option<fidl_fuchsia_math__common::SizeU>,
147 pub recommended_device_pixel_ratio: Option<fidl_fuchsia_math__common::VecF>,
153 pub maximum_refresh_rate_in_millihertz: Option<u32>,
156 #[doc(hidden)]
157 pub __source_breaking: fidl::marker::SourceBreaking,
158}
159
160impl fidl::Persistable for Metrics {}
161
162pub mod display_power_ordinals {
163 pub const SET_POWER_MODE: u64 = 0x420dcd07d68e1fbc;
164}
165
166pub mod info_ordinals {
167 pub const GET_METRICS: u64 = 0x6d631353834698be;
168}
169
170pub mod vsync_source_ordinals {
171 pub const SET_VSYNC_ENABLED: u64 = 0x5aaab140804e1b32;
172 pub const ON_VSYNC: u64 = 0x6677c178c3451448;
173}
174
175mod internal {
176 use super::*;
177 unsafe impl fidl::encoding::TypeMarker for PowerMode {
178 type Owned = Self;
179
180 #[inline(always)]
181 fn inline_align(_context: fidl::encoding::Context) -> usize {
182 std::mem::align_of::<u32>()
183 }
184
185 #[inline(always)]
186 fn inline_size(_context: fidl::encoding::Context) -> usize {
187 std::mem::size_of::<u32>()
188 }
189
190 #[inline(always)]
191 fn encode_is_copy() -> bool {
192 false
193 }
194
195 #[inline(always)]
196 fn decode_is_copy() -> bool {
197 false
198 }
199 }
200
201 impl fidl::encoding::ValueTypeMarker for PowerMode {
202 type Borrowed<'a> = Self;
203 #[inline(always)]
204 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
205 *value
206 }
207 }
208
209 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowerMode {
210 #[inline]
211 unsafe fn encode(
212 self,
213 encoder: &mut fidl::encoding::Encoder<'_, D>,
214 offset: usize,
215 _depth: fidl::encoding::Depth,
216 ) -> fidl::Result<()> {
217 encoder.debug_check_bounds::<Self>(offset);
218 encoder.write_num(self.into_primitive(), offset);
219 Ok(())
220 }
221 }
222
223 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerMode {
224 #[inline(always)]
225 fn new_empty() -> Self {
226 Self::unknown()
227 }
228
229 #[inline]
230 unsafe fn decode(
231 &mut self,
232 decoder: &mut fidl::encoding::Decoder<'_, D>,
233 offset: usize,
234 _depth: fidl::encoding::Depth,
235 ) -> fidl::Result<()> {
236 decoder.debug_check_bounds::<Self>(offset);
237 let prim = decoder.read_num::<u32>(offset);
238
239 *self = Self::from_primitive_allow_unknown(prim);
240 Ok(())
241 }
242 }
243
244 impl fidl::encoding::ValueTypeMarker for DisplayPowerSetPowerModeRequest {
245 type Borrowed<'a> = &'a Self;
246 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
247 value
248 }
249 }
250
251 unsafe impl fidl::encoding::TypeMarker for DisplayPowerSetPowerModeRequest {
252 type Owned = Self;
253
254 #[inline(always)]
255 fn inline_align(_context: fidl::encoding::Context) -> usize {
256 4
257 }
258
259 #[inline(always)]
260 fn inline_size(_context: fidl::encoding::Context) -> usize {
261 4
262 }
263 }
264
265 unsafe impl<D: fidl::encoding::ResourceDialect>
266 fidl::encoding::Encode<DisplayPowerSetPowerModeRequest, D>
267 for &DisplayPowerSetPowerModeRequest
268 {
269 #[inline]
270 unsafe fn encode(
271 self,
272 encoder: &mut fidl::encoding::Encoder<'_, D>,
273 offset: usize,
274 _depth: fidl::encoding::Depth,
275 ) -> fidl::Result<()> {
276 encoder.debug_check_bounds::<DisplayPowerSetPowerModeRequest>(offset);
277 fidl::encoding::Encode::<DisplayPowerSetPowerModeRequest, D>::encode(
279 (<PowerMode as fidl::encoding::ValueTypeMarker>::borrow(&self.power_mode),),
280 encoder,
281 offset,
282 _depth,
283 )
284 }
285 }
286 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PowerMode, D>>
287 fidl::encoding::Encode<DisplayPowerSetPowerModeRequest, D> for (T0,)
288 {
289 #[inline]
290 unsafe fn encode(
291 self,
292 encoder: &mut fidl::encoding::Encoder<'_, D>,
293 offset: usize,
294 depth: fidl::encoding::Depth,
295 ) -> fidl::Result<()> {
296 encoder.debug_check_bounds::<DisplayPowerSetPowerModeRequest>(offset);
297 self.0.encode(encoder, offset + 0, depth)?;
301 Ok(())
302 }
303 }
304
305 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
306 for DisplayPowerSetPowerModeRequest
307 {
308 #[inline(always)]
309 fn new_empty() -> Self {
310 Self { power_mode: fidl::new_empty!(PowerMode, D) }
311 }
312
313 #[inline]
314 unsafe fn decode(
315 &mut self,
316 decoder: &mut fidl::encoding::Decoder<'_, D>,
317 offset: usize,
318 _depth: fidl::encoding::Depth,
319 ) -> fidl::Result<()> {
320 decoder.debug_check_bounds::<Self>(offset);
321 fidl::decode!(PowerMode, D, &mut self.power_mode, decoder, offset + 0, _depth)?;
323 Ok(())
324 }
325 }
326
327 impl fidl::encoding::ValueTypeMarker for InfoGetMetricsResponse {
328 type Borrowed<'a> = &'a Self;
329 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
330 value
331 }
332 }
333
334 unsafe impl fidl::encoding::TypeMarker for InfoGetMetricsResponse {
335 type Owned = Self;
336
337 #[inline(always)]
338 fn inline_align(_context: fidl::encoding::Context) -> usize {
339 8
340 }
341
342 #[inline(always)]
343 fn inline_size(_context: fidl::encoding::Context) -> usize {
344 16
345 }
346 }
347
348 unsafe impl<D: fidl::encoding::ResourceDialect>
349 fidl::encoding::Encode<InfoGetMetricsResponse, D> for &InfoGetMetricsResponse
350 {
351 #[inline]
352 unsafe fn encode(
353 self,
354 encoder: &mut fidl::encoding::Encoder<'_, D>,
355 offset: usize,
356 _depth: fidl::encoding::Depth,
357 ) -> fidl::Result<()> {
358 encoder.debug_check_bounds::<InfoGetMetricsResponse>(offset);
359 fidl::encoding::Encode::<InfoGetMetricsResponse, D>::encode(
361 (<Metrics as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
362 encoder,
363 offset,
364 _depth,
365 )
366 }
367 }
368 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Metrics, D>>
369 fidl::encoding::Encode<InfoGetMetricsResponse, D> for (T0,)
370 {
371 #[inline]
372 unsafe fn encode(
373 self,
374 encoder: &mut fidl::encoding::Encoder<'_, D>,
375 offset: usize,
376 depth: fidl::encoding::Depth,
377 ) -> fidl::Result<()> {
378 encoder.debug_check_bounds::<InfoGetMetricsResponse>(offset);
379 self.0.encode(encoder, offset + 0, depth)?;
383 Ok(())
384 }
385 }
386
387 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
388 for InfoGetMetricsResponse
389 {
390 #[inline(always)]
391 fn new_empty() -> Self {
392 Self { info: fidl::new_empty!(Metrics, D) }
393 }
394
395 #[inline]
396 unsafe fn decode(
397 &mut self,
398 decoder: &mut fidl::encoding::Decoder<'_, D>,
399 offset: usize,
400 _depth: fidl::encoding::Depth,
401 ) -> fidl::Result<()> {
402 decoder.debug_check_bounds::<Self>(offset);
403 fidl::decode!(Metrics, D, &mut self.info, decoder, offset + 0, _depth)?;
405 Ok(())
406 }
407 }
408
409 impl fidl::encoding::ValueTypeMarker for VsyncSourceOnVsyncRequest {
410 type Borrowed<'a> = &'a Self;
411 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
412 value
413 }
414 }
415
416 unsafe impl fidl::encoding::TypeMarker for VsyncSourceOnVsyncRequest {
417 type Owned = Self;
418
419 #[inline(always)]
420 fn inline_align(_context: fidl::encoding::Context) -> usize {
421 8
422 }
423
424 #[inline(always)]
425 fn inline_size(_context: fidl::encoding::Context) -> usize {
426 8
427 }
428 #[inline(always)]
429 fn encode_is_copy() -> bool {
430 true
431 }
432
433 #[inline(always)]
434 fn decode_is_copy() -> bool {
435 true
436 }
437 }
438
439 unsafe impl<D: fidl::encoding::ResourceDialect>
440 fidl::encoding::Encode<VsyncSourceOnVsyncRequest, D> for &VsyncSourceOnVsyncRequest
441 {
442 #[inline]
443 unsafe fn encode(
444 self,
445 encoder: &mut fidl::encoding::Encoder<'_, D>,
446 offset: usize,
447 _depth: fidl::encoding::Depth,
448 ) -> fidl::Result<()> {
449 encoder.debug_check_bounds::<VsyncSourceOnVsyncRequest>(offset);
450 unsafe {
451 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
453 (buf_ptr as *mut VsyncSourceOnVsyncRequest)
454 .write_unaligned((self as *const VsyncSourceOnVsyncRequest).read());
455 }
458 Ok(())
459 }
460 }
461 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
462 fidl::encoding::Encode<VsyncSourceOnVsyncRequest, D> for (T0,)
463 {
464 #[inline]
465 unsafe fn encode(
466 self,
467 encoder: &mut fidl::encoding::Encoder<'_, D>,
468 offset: usize,
469 depth: fidl::encoding::Depth,
470 ) -> fidl::Result<()> {
471 encoder.debug_check_bounds::<VsyncSourceOnVsyncRequest>(offset);
472 self.0.encode(encoder, offset + 0, depth)?;
476 Ok(())
477 }
478 }
479
480 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
481 for VsyncSourceOnVsyncRequest
482 {
483 #[inline(always)]
484 fn new_empty() -> Self {
485 Self { timestamp: fidl::new_empty!(i64, D) }
486 }
487
488 #[inline]
489 unsafe fn decode(
490 &mut self,
491 decoder: &mut fidl::encoding::Decoder<'_, D>,
492 offset: usize,
493 _depth: fidl::encoding::Depth,
494 ) -> fidl::Result<()> {
495 decoder.debug_check_bounds::<Self>(offset);
496 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
497 unsafe {
500 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
501 }
502 Ok(())
503 }
504 }
505
506 impl fidl::encoding::ValueTypeMarker for VsyncSourceSetVsyncEnabledRequest {
507 type Borrowed<'a> = &'a Self;
508 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
509 value
510 }
511 }
512
513 unsafe impl fidl::encoding::TypeMarker for VsyncSourceSetVsyncEnabledRequest {
514 type Owned = Self;
515
516 #[inline(always)]
517 fn inline_align(_context: fidl::encoding::Context) -> usize {
518 1
519 }
520
521 #[inline(always)]
522 fn inline_size(_context: fidl::encoding::Context) -> usize {
523 1
524 }
525 }
526
527 unsafe impl<D: fidl::encoding::ResourceDialect>
528 fidl::encoding::Encode<VsyncSourceSetVsyncEnabledRequest, D>
529 for &VsyncSourceSetVsyncEnabledRequest
530 {
531 #[inline]
532 unsafe fn encode(
533 self,
534 encoder: &mut fidl::encoding::Encoder<'_, D>,
535 offset: usize,
536 _depth: fidl::encoding::Depth,
537 ) -> fidl::Result<()> {
538 encoder.debug_check_bounds::<VsyncSourceSetVsyncEnabledRequest>(offset);
539 fidl::encoding::Encode::<VsyncSourceSetVsyncEnabledRequest, D>::encode(
541 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
542 encoder,
543 offset,
544 _depth,
545 )
546 }
547 }
548 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
549 fidl::encoding::Encode<VsyncSourceSetVsyncEnabledRequest, D> for (T0,)
550 {
551 #[inline]
552 unsafe fn encode(
553 self,
554 encoder: &mut fidl::encoding::Encoder<'_, D>,
555 offset: usize,
556 depth: fidl::encoding::Depth,
557 ) -> fidl::Result<()> {
558 encoder.debug_check_bounds::<VsyncSourceSetVsyncEnabledRequest>(offset);
559 self.0.encode(encoder, offset + 0, depth)?;
563 Ok(())
564 }
565 }
566
567 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
568 for VsyncSourceSetVsyncEnabledRequest
569 {
570 #[inline(always)]
571 fn new_empty() -> Self {
572 Self { enabled: fidl::new_empty!(bool, D) }
573 }
574
575 #[inline]
576 unsafe fn decode(
577 &mut self,
578 decoder: &mut fidl::encoding::Decoder<'_, D>,
579 offset: usize,
580 _depth: fidl::encoding::Depth,
581 ) -> fidl::Result<()> {
582 decoder.debug_check_bounds::<Self>(offset);
583 fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
585 Ok(())
586 }
587 }
588
589 impl Metrics {
590 #[inline(always)]
591 fn max_ordinal_present(&self) -> u64 {
592 if let Some(_) = self.maximum_refresh_rate_in_millihertz {
593 return 4;
594 }
595 if let Some(_) = self.recommended_device_pixel_ratio {
596 return 3;
597 }
598 if let Some(_) = self.extent_in_mm {
599 return 2;
600 }
601 if let Some(_) = self.extent_in_px {
602 return 1;
603 }
604 0
605 }
606 }
607
608 impl fidl::encoding::ValueTypeMarker for Metrics {
609 type Borrowed<'a> = &'a Self;
610 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
611 value
612 }
613 }
614
615 unsafe impl fidl::encoding::TypeMarker for Metrics {
616 type Owned = Self;
617
618 #[inline(always)]
619 fn inline_align(_context: fidl::encoding::Context) -> usize {
620 8
621 }
622
623 #[inline(always)]
624 fn inline_size(_context: fidl::encoding::Context) -> usize {
625 16
626 }
627 }
628
629 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Metrics, D> for &Metrics {
630 unsafe fn encode(
631 self,
632 encoder: &mut fidl::encoding::Encoder<'_, D>,
633 offset: usize,
634 mut depth: fidl::encoding::Depth,
635 ) -> fidl::Result<()> {
636 encoder.debug_check_bounds::<Metrics>(offset);
637 let max_ordinal: u64 = self.max_ordinal_present();
639 encoder.write_num(max_ordinal, offset);
640 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
641 if max_ordinal == 0 {
643 return Ok(());
644 }
645 depth.increment()?;
646 let envelope_size = 8;
647 let bytes_len = max_ordinal as usize * envelope_size;
648 #[allow(unused_variables)]
649 let offset = encoder.out_of_line_offset(bytes_len);
650 let mut _prev_end_offset: usize = 0;
651 if 1 > max_ordinal {
652 return Ok(());
653 }
654
655 let cur_offset: usize = (1 - 1) * envelope_size;
658
659 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
661
662 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_math__common::SizeU, D>(
667 self.extent_in_px.as_ref().map(
668 <fidl_fuchsia_math__common::SizeU as fidl::encoding::ValueTypeMarker>::borrow,
669 ),
670 encoder,
671 offset + cur_offset,
672 depth,
673 )?;
674
675 _prev_end_offset = cur_offset + envelope_size;
676 if 2 > max_ordinal {
677 return Ok(());
678 }
679
680 let cur_offset: usize = (2 - 1) * envelope_size;
683
684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
686
687 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_math__common::SizeU, D>(
692 self.extent_in_mm.as_ref().map(
693 <fidl_fuchsia_math__common::SizeU as fidl::encoding::ValueTypeMarker>::borrow,
694 ),
695 encoder,
696 offset + cur_offset,
697 depth,
698 )?;
699
700 _prev_end_offset = cur_offset + envelope_size;
701 if 3 > max_ordinal {
702 return Ok(());
703 }
704
705 let cur_offset: usize = (3 - 1) * envelope_size;
708
709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
711
712 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_math__common::VecF, D>(
717 self.recommended_device_pixel_ratio.as_ref().map(
718 <fidl_fuchsia_math__common::VecF as fidl::encoding::ValueTypeMarker>::borrow,
719 ),
720 encoder,
721 offset + cur_offset,
722 depth,
723 )?;
724
725 _prev_end_offset = cur_offset + envelope_size;
726 if 4 > max_ordinal {
727 return Ok(());
728 }
729
730 let cur_offset: usize = (4 - 1) * envelope_size;
733
734 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
736
737 fidl::encoding::encode_in_envelope_optional::<u32, D>(
742 self.maximum_refresh_rate_in_millihertz
743 .as_ref()
744 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
745 encoder,
746 offset + cur_offset,
747 depth,
748 )?;
749
750 _prev_end_offset = cur_offset + envelope_size;
751
752 Ok(())
753 }
754 }
755
756 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Metrics {
757 #[inline(always)]
758 fn new_empty() -> Self {
759 Self::default()
760 }
761
762 unsafe fn decode(
763 &mut self,
764 decoder: &mut fidl::encoding::Decoder<'_, D>,
765 offset: usize,
766 mut depth: fidl::encoding::Depth,
767 ) -> fidl::Result<()> {
768 decoder.debug_check_bounds::<Self>(offset);
769 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
770 None => return Err(fidl::Error::NotNullable),
771 Some(len) => len,
772 };
773 if len == 0 {
775 return Ok(());
776 };
777 depth.increment()?;
778 let envelope_size = 8;
779 let bytes_len = len * envelope_size;
780 let offset = decoder.out_of_line_offset(bytes_len)?;
781 let mut _next_ordinal_to_read = 0;
783 let mut next_offset = offset;
784 let end_offset = offset + bytes_len;
785 _next_ordinal_to_read += 1;
786 if next_offset >= end_offset {
787 return Ok(());
788 }
789
790 while _next_ordinal_to_read < 1 {
792 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
793 _next_ordinal_to_read += 1;
794 next_offset += envelope_size;
795 }
796
797 let next_out_of_line = decoder.next_out_of_line();
798 let handles_before = decoder.remaining_handles();
799 if let Some((inlined, num_bytes, num_handles)) =
800 fidl::encoding::decode_envelope_header(decoder, next_offset)?
801 {
802 let member_inline_size =
803 <fidl_fuchsia_math__common::SizeU as fidl::encoding::TypeMarker>::inline_size(
804 decoder.context,
805 );
806 if inlined != (member_inline_size <= 4) {
807 return Err(fidl::Error::InvalidInlineBitInEnvelope);
808 }
809 let inner_offset;
810 let mut inner_depth = depth.clone();
811 if inlined {
812 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
813 inner_offset = next_offset;
814 } else {
815 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
816 inner_depth.increment()?;
817 }
818 let val_ref = self
819 .extent_in_px
820 .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_math__common::SizeU, D));
821 fidl::decode!(
822 fidl_fuchsia_math__common::SizeU,
823 D,
824 val_ref,
825 decoder,
826 inner_offset,
827 inner_depth
828 )?;
829 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
830 {
831 return Err(fidl::Error::InvalidNumBytesInEnvelope);
832 }
833 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
834 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
835 }
836 }
837
838 next_offset += envelope_size;
839 _next_ordinal_to_read += 1;
840 if next_offset >= end_offset {
841 return Ok(());
842 }
843
844 while _next_ordinal_to_read < 2 {
846 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
847 _next_ordinal_to_read += 1;
848 next_offset += envelope_size;
849 }
850
851 let next_out_of_line = decoder.next_out_of_line();
852 let handles_before = decoder.remaining_handles();
853 if let Some((inlined, num_bytes, num_handles)) =
854 fidl::encoding::decode_envelope_header(decoder, next_offset)?
855 {
856 let member_inline_size =
857 <fidl_fuchsia_math__common::SizeU as fidl::encoding::TypeMarker>::inline_size(
858 decoder.context,
859 );
860 if inlined != (member_inline_size <= 4) {
861 return Err(fidl::Error::InvalidInlineBitInEnvelope);
862 }
863 let inner_offset;
864 let mut inner_depth = depth.clone();
865 if inlined {
866 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
867 inner_offset = next_offset;
868 } else {
869 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
870 inner_depth.increment()?;
871 }
872 let val_ref = self
873 .extent_in_mm
874 .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_math__common::SizeU, D));
875 fidl::decode!(
876 fidl_fuchsia_math__common::SizeU,
877 D,
878 val_ref,
879 decoder,
880 inner_offset,
881 inner_depth
882 )?;
883 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
884 {
885 return Err(fidl::Error::InvalidNumBytesInEnvelope);
886 }
887 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
888 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
889 }
890 }
891
892 next_offset += envelope_size;
893 _next_ordinal_to_read += 1;
894 if next_offset >= end_offset {
895 return Ok(());
896 }
897
898 while _next_ordinal_to_read < 3 {
900 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
901 _next_ordinal_to_read += 1;
902 next_offset += envelope_size;
903 }
904
905 let next_out_of_line = decoder.next_out_of_line();
906 let handles_before = decoder.remaining_handles();
907 if let Some((inlined, num_bytes, num_handles)) =
908 fidl::encoding::decode_envelope_header(decoder, next_offset)?
909 {
910 let member_inline_size =
911 <fidl_fuchsia_math__common::VecF as fidl::encoding::TypeMarker>::inline_size(
912 decoder.context,
913 );
914 if inlined != (member_inline_size <= 4) {
915 return Err(fidl::Error::InvalidInlineBitInEnvelope);
916 }
917 let inner_offset;
918 let mut inner_depth = depth.clone();
919 if inlined {
920 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
921 inner_offset = next_offset;
922 } else {
923 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
924 inner_depth.increment()?;
925 }
926 let val_ref = self
927 .recommended_device_pixel_ratio
928 .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_math__common::VecF, D));
929 fidl::decode!(
930 fidl_fuchsia_math__common::VecF,
931 D,
932 val_ref,
933 decoder,
934 inner_offset,
935 inner_depth
936 )?;
937 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
938 {
939 return Err(fidl::Error::InvalidNumBytesInEnvelope);
940 }
941 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
942 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
943 }
944 }
945
946 next_offset += envelope_size;
947 _next_ordinal_to_read += 1;
948 if next_offset >= end_offset {
949 return Ok(());
950 }
951
952 while _next_ordinal_to_read < 4 {
954 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
955 _next_ordinal_to_read += 1;
956 next_offset += envelope_size;
957 }
958
959 let next_out_of_line = decoder.next_out_of_line();
960 let handles_before = decoder.remaining_handles();
961 if let Some((inlined, num_bytes, num_handles)) =
962 fidl::encoding::decode_envelope_header(decoder, next_offset)?
963 {
964 let member_inline_size =
965 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
966 if inlined != (member_inline_size <= 4) {
967 return Err(fidl::Error::InvalidInlineBitInEnvelope);
968 }
969 let inner_offset;
970 let mut inner_depth = depth.clone();
971 if inlined {
972 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
973 inner_offset = next_offset;
974 } else {
975 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
976 inner_depth.increment()?;
977 }
978 let val_ref = self
979 .maximum_refresh_rate_in_millihertz
980 .get_or_insert_with(|| fidl::new_empty!(u32, D));
981 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
982 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
983 {
984 return Err(fidl::Error::InvalidNumBytesInEnvelope);
985 }
986 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
987 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
988 }
989 }
990
991 next_offset += envelope_size;
992
993 while next_offset < end_offset {
995 _next_ordinal_to_read += 1;
996 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
997 next_offset += envelope_size;
998 }
999
1000 Ok(())
1001 }
1002 }
1003}