The xrandr --query option probes a lot of things from the monitor, some of which can be fairly slow depending on the monitors connected.

Can your daemon watch for RandR events instead? See the code for "xev -event randr" if you need an example.