TrilbyWhite / Slider

PDF presentation tool
GNU General Public License v3.0
54 stars 12 forks source link

Slider fails to get RandR information #6

Closed wlhlm closed 11 years ago

wlhlm commented 11 years ago

When I'm trying to start Slider I get the following error message:

No RandR info for screen 1

Here is my current monitor setup:

$ xrandr -q
Screen 0: minimum 8 x 8, current 2960 x 1050, maximum 8192 x 8192
DVI-I-0 disconnected (normal left inverted right x axis y axis)
VGA-0 connected 1280x1024+1680+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   75.0  
   1024x768       75.0     60.0  
   800x600        75.0     60.3  
   640x480        75.0     59.9  
DVI-I-1 connected primary 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
   1680x1050      59.9*+   60.0  
   1440x900       59.9  
   1280x1024      75.0     60.0  
   1280x960       60.0  
   1152x864       75.0  
   1024x768       75.0     60.0  
   800x600        75.0     60.3     56.2  
   640x480        75.0     59.9  
HDMI-0 disconnected (normal left inverted right x axis y axis)

I guess it could be an issue with TwinView (I have it enabled with nvidia binary driver version 313.30).

Slider version: eb58fd0be7fb4930e5455230a20ca4de3a1a3f3a

TrilbyWhite commented 11 years ago

Oops, I think I know why this is. The new version of slider makes what turns out to be an unsafe assumption. It gets an array of monitor information from XRandR, and loops through it to get the highest numbered active screen (which should work) but then it just assumes that monitor 0 is also active. In your case, it should use monitors 1 and 3, but it would try to use 0 and 3 (or DVI-I-0 and DVI-I-1 based on your output.

If convenient, could you verify this: if you connect DVI-I-1 and any of the other three, does it work?

In either case, I'll have a fix for what I think is causing this by tomorrow.

TrilbyWhite commented 11 years ago

Actually, I think I was able to patch this up. Please get the latest update and try again.

wlhlm commented 11 years ago

Thank you, now Slider correctly detects my monitors. It automatically starts on my secondary monitor (VGA-0). An option to specify the xrandr output would be great... I'm also curious to know which output Slider chooses by default - is it just the non-primary output (what if you have a third monitor attached)?

Sorry, that's the xrandr output of my desktop machine and its graphics card has one DVI, one VGA and one HDMI output and I think I can only get the DVI-I-0 port by using a HDMI-DVI-adapter and I haven't one available.

I also tried to use Slider with only one monitor plugged in and it gave me:

No monitors detected

I think one should still be able to view the presentation with just one beamer/monitor (I imagine a presentation using a tiny Raspberry Pi which has only one HDMI port...).

TrilbyWhite commented 11 years ago

If there is only one monitor with an available output, slider will just show the presentation. It just automatically includes presenter view when there is more than one available monitor.

Currently, it finds the highest and lowested numbered monitors (according to xrandr's ordering) that are connected and puts the presentation on the highest number, and the presenter notes on the lowest numbered if the highest and lowest are not the same (i.e., there is more than one monitor).

I've been planning on making this more easy to config, but this "reborn" version of slider is still pretty new. Expect that customization ability to come soon. But as is, it should work on a R.Pi with a single output.

EDIT: did it give "no monitors detected" with the most recent revision? It shouldn't.

wlhlm commented 11 years ago

I get the same error message with the latest version. Here is my xrandr output:

$ xrandr -q
Screen 0: minimum 8 x 8, current 1680 x 1050, maximum 8192 x 8192
DVI-I-0 disconnected (normal left inverted right x axis y axis)
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected primary 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
   1680x1050      59.9*+   60.0  
   1440x900       59.9  
   1280x1024      75.0     60.0  
   1280x960       60.0  
   1152x864       75.0  
   1024x768       75.0     60.0  
   800x600        75.0     60.3     56.2  
   640x480        75.0     59.9  
HDMI-0 disconnected (normal left inverted right x axis y axis

I can try to debug this, but I'm not a C programmer. Maybe can you tell what I can do to figure out what's the problem?

I think there is an issue with

xrr_out_info = XRRGetOutputInfo(dpy,xrr_sr,xrr_sr->outputs[i]);

on line 295.

TrilbyWhite commented 11 years ago

I've just added some verbose output elements in conditional compile blocks. If you could pull the latest changes and compile with make debug (this could be added to the build function of the PKGBUILD if you prefer). Then when it runs it should output one line for every potential monitor (4 in your case), an additional line for any connected monitor (one for you) and a final line with the values of the variable "hi" and "low".

That output may shed some light. This is my output from successfully running slider on my one-monitor set up here:

0 (LVDS) -> found crtc for 0 (LVDS) 1 (S-video)

hi=-1 low=0

wlhlm commented 11 years ago

With the second monitor, the output looks like this:

0 (DVI-I-0)
1 (VGA-0)
 -> found crtc for 1 (VGA-0)

hi=-1 low=1

With one monitor and debug enabled I get the following:

0 (DVI-I-0)
1 (VGA-0)

hi=-1 low=-1
No monitors detected

That's weird, because I haven't plugged in VGA-0. This appears even after I deleted my xorg.conf.

TrilbyWhite commented 11 years ago

Odd, it looks like libxrandr is not even detecting the other two connections. I may have to look into the source code for xrandr itself as it clearly detects those outputs.

OK, I read through much of the xrandr's source code and found that I was likely doing something incorrectly. I've revised based on how xrandr works. So far, however, I've only tested it on my single-monitor computer. I'll start testing on other monitors soon - but if you want to try the new revision, please let me know how it works.

wlhlm commented 11 years ago

c593e9ce29057827fbcac63229792705b8222708 now fixes everything - the monitor gets correctly detected.

Thank you!

TrilbyWhite commented 11 years ago

I've just redone much of the xrandr code again to allow for the monitors to be selected from the command line.

If no command line option is used, the behavior should not have changed, but if for any reason this caused the problem to return, let me know.

You can use the flag "-m," on the command line, or just "-m". For example "-mVGA1" will show the presentation on VGA1 and no presenter mode, regardless of how many monitors are available. Or "-mVGA1,DVI1" would put the presentation on VGA1 and the notes on DVI1.