267
268
maybe_reload_init_file (si);
268
kill_screenhack (si);
269
for (i = 0; i < si->nscreens; i++)
270
kill_screenhack (&si->screens[i]);
272
raise_window (si, True, True, False);
270
274
if (!si->throttled_p)
271
spawn_screenhack (si, False);
275
for (i = 0; i < si->nscreens; i++)
276
spawn_screenhack (&si->screens[i]);
274
raise_window (si, True, True, False);
275
279
if (p->verbose_p)
276
280
fprintf (stderr, "%s: not launching new hack (throttled.)\n",
1010
1014
if (event.type == (si->randr_event_number + RRScreenChangeNotify))
1012
1016
/* The Resize and Rotate extension sends an event when the
1013
size, rotation, or refresh rate of the screen has changed. */
1017
size, rotation, or refresh rate of any screen has changed.
1015
1019
XRRScreenChangeNotifyEvent *xrr_event =
1016
1020
(XRRScreenChangeNotifyEvent *) &event;
1017
/* XRRRootToScreen is in Xrandr.h 1.4, 2001/06/07 */
1018
int screen = XRRRootToScreen (si->dpy, xrr_event->window);
1020
1022
if (p->verbose_p)
1022
if (si->screens[screen].width == xrr_event->width &&
1023
si->screens[screen].height == xrr_event->height)
1025
"%s: %d: no-op screen size change event (%dx%d)\n",
1027
xrr_event->width, xrr_event->height);
1030
"%s: %d: screen size changed from %dx%d to %dx%d\n",
1032
si->screens[screen].width,
1033
si->screens[screen].height,
1034
xrr_event->width, xrr_event->height);
1024
/* XRRRootToScreen is in Xrandr.h 1.4, 2001/06/07 */
1025
int screen = XRRRootToScreen (si->dpy, xrr_event->window);
1026
fprintf (stderr, "%s: %d: screen change event received\n",
1037
1030
# ifdef RRScreenChangeNotifyMask
1040
1033
# endif /* RRScreenChangeNotifyMask */
1042
1035
/* Resize the existing xscreensaver windows and cached ssi data. */
1043
resize_screensaver_window (si);
1036
if (update_screen_layout (si))
1040
fprintf (stderr, "%s: new layout:\n", blurb());
1041
describe_monitor_layout (si);
1043
resize_screensaver_window (si);
1046
1047
#endif /* HAVE_RANDR */
1401
1402
if (screenhack_running_p (si) &&
1402
1403
!monitor_powered_on_p (si))
1404
1406
if (si->prefs.verbose_p)
1405
1407
fprintf (stderr,
1406
1408
"%s: X says monitor has powered down; "
1407
1409
"killing running hacks.\n", blurb());
1408
kill_screenhack (si);
1410
for (i = 0; i < si->nscreens; i++)
1411
kill_screenhack (&si->screens[i]);
1411
1414
/* Re-schedule this timer. The watchdog timer defaults to a bit less