The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

c/multi: Implement display refresh rate functions

authored by

Zhongwang Zhang and committed by
Jakob Bornecrantz
df071285 a9017c85

+45
+24
src/xrt/compositor/multi/comp_multi_compositor.c
··· 882 882 return XRT_SUCCESS; 883 883 } 884 884 885 + static xrt_result_t 886 + multi_compositor_get_display_refresh_rate(struct xrt_compositor *xc, float *out_display_refresh_rate_hz) 887 + { 888 + COMP_TRACE_MARKER(); 889 + 890 + struct multi_compositor *mc = multi_compositor(xc); 891 + 892 + return xrt_comp_get_display_refresh_rate(&mc->msc->xcn->base, out_display_refresh_rate_hz); 893 + } 894 + 895 + static xrt_result_t 896 + multi_compositor_request_display_refresh_rate(struct xrt_compositor *xc, float display_refresh_rate_hz) 897 + { 898 + COMP_TRACE_MARKER(); 899 + 900 + struct multi_compositor *mc = multi_compositor(xc); 901 + 902 + xrt_comp_request_display_refresh_rate(&mc->msc->xcn->base, display_refresh_rate_hz); 903 + 904 + return XRT_SUCCESS; 905 + } 906 + 885 907 static void 886 908 multi_compositor_destroy(struct xrt_compositor *xc) 887 909 { ··· 1010 1032 mc->base.base.destroy = multi_compositor_destroy; 1011 1033 mc->base.base.poll_events = multi_compositor_poll_events; 1012 1034 mc->base.base.set_thread_hint = multi_compositor_set_thread_hint; 1035 + mc->base.base.get_display_refresh_rate = multi_compositor_get_display_refresh_rate; 1036 + mc->base.base.request_display_refresh_rate = multi_compositor_request_display_refresh_rate; 1013 1037 mc->msc = msc; 1014 1038 mc->xsi = *xsi; 1015 1039
+21
src/xrt/compositor/multi/comp_multi_system.c
··· 631 631 return XRT_SUCCESS; 632 632 } 633 633 634 + static xrt_result_t 635 + system_compositor_notify_display_refresh_changed(struct xrt_system_compositor *xsc, 636 + struct xrt_compositor *xc, 637 + float from_display_refresh_rate_hz, 638 + float to_display_refresh_rate_hz) 639 + { 640 + struct multi_system_compositor *msc = multi_system_compositor(xsc); 641 + struct multi_compositor *mc = multi_compositor(xc); 642 + (void)msc; 643 + 644 + union xrt_compositor_event xce = XRT_STRUCT_INIT; 645 + xce.type = XRT_COMPOSITOR_EVENT_DISPLAY_REFRESH_RATE_CHANGE; 646 + xce.display.from_display_refresh_rate_hz = from_display_refresh_rate_hz; 647 + xce.display.to_display_refresh_rate_hz = to_display_refresh_rate_hz; 648 + 649 + multi_compositor_push_event(mc, &xce); 650 + 651 + return XRT_SUCCESS; 652 + } 653 + 634 654 635 655 /* 636 656 * ··· 706 726 msc->xmcc.set_main_app_visibility = system_compositor_set_main_app_visibility; 707 727 msc->xmcc.notify_loss_pending = system_compositor_notify_loss_pending; 708 728 msc->xmcc.notify_lost = system_compositor_notify_lost; 729 + msc->xmcc.notify_display_refresh_changed = system_compositor_notify_display_refresh_changed; 709 730 msc->base.xmcc = &msc->xmcc; 710 731 msc->base.info = *xsci; 711 732 msc->upaf = upaf;