<div dir="ltr"><div class="gmail_default" style="font-size:small">Andrew, could a procedure to get this working be detailed so Andrea could add it to the Manual?<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jan 7, 2023 at 9:40 PM Andrew Randrianasulu <<a href="mailto:randrianasulu@gmail.com">randrianasulu@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I tried to test multi-monitor support by firing another, nested X server<br>
<br>
Xephyr :1 -screen 1024x768<br>
<br>
then Cin displays her windows on either DISPLAY :0 or :1 depend on<br>
preferences but I can\t set compositor to just one ...xserver.<br>
<br>
I looked into code :)<br>
<br>
in cwindowgui.C<br>
<br>
CWindowGUI::CWindowGUI(MWindow *mwindow, CWindow *cwindow)<br>
 : BC_Window(_(PROGRAM_NAME ": Compositor"),<br>
    mwindow->session->cwindow_x,<br>
    mwindow->session->cwindow_y,<br>
    mwindow->session->cwindow_w,<br>
    mwindow->session->cwindow_h,<br>
    xS(100), yS(100), 1, 1, 1,<br>
    BC_WindowBase::get_resources()->bg_color,<br>
    mwindow->get_cwindow_display())<br>
<br>
in mwindow.C<br>
<br>
char *MWindow::get_cwindow_display()<br>
{<br>
    char *x11_host = screens < 2 || session->window_config == 0 ?<br>
        session->a_x11_host : session->b_x11_host;<br>
    return *x11_host ? x11_host : 0;<br>
}<br>
<br>
and screens set in<br>
<br>
void MWindow::init_preferences()<br>
{<br>
    preferences = new Preferences;<br>
    preferences->load_defaults(defaults);<br>
    File::setenv_path("LV2_PATH",preferences->lv2_path, 1);<br>
    session = new MainSession(this);<br>
    session->load_defaults(defaults);<br>
    // set x11_host, screens, window_config<br>
    screens = session->set_default_x11_host();<br>
<br>
so into mainsession.C<br>
<br>
// set default x11 host, window_config, return screens<br>
int MainSession::set_default_x11_host(int win_config)<br>
{<br>
    if( win_config < 0 ) win_config = window_config;<br>
    const char *x11_host = win_config!=1 ? a_x11_host : b_x11_host;<br>
    BC_DisplayInfo display_info(x11_host,0);<br>
    int screen = display_info.get_screen();<br>
    if( screen < 0 && strcmp(a_x11_host, b_x11_host) ) {<br>
        win_config = win_config==1 ? 0 : 1;<br>
        x11_host = win_config!=1 ? a_x11_host : b_x11_host;<br>
        display_info.init_window(x11_host,0);<br>
        screen = display_info.get_screen();<br>
    }<br>
    if( screen < 0 ) {<br>
        x11_host = "";<br>
        display_info.init_window(x11_host,1);<br>
    }<br>
    int screens = 1;<br>
    if( display_info.get_screen_count() > 1 )<br>
        screens = strcmp(a_x11_host, b_x11_host) != 0 ? 2 : 1;<br>
    window_config = win_config;<br>
    BC_Window::set_default_x11_host(x11_host);<br>
    return screens;<br>
}<br>
<br>
and display_info lives in<br>
<br>
guicast/bcdisplayinfo.C and h<br>
<br>
in our case in h file<br>
<br>
int get_screen() { return scrnum; }<br>
<br>
and scrnum set to<br>
 scrnum = DefaultScreen(display);<br>
<br>
in void BC_DisplayInfo::init_window(const char *display_name, int show_error)<br>
<br>
so, it seems having two 'x11 hosts" as separate X servers to send<br>
Compositor to actually not supported... ? we query number of screens<br>
on specific display/host ...<br>
<br>
so :0.0 and :0.1 works, while :1.0 and :0.0 not ?<br>
<br>
also, 3 or more displays will not work?<br>
</blockquote></div>