comparison libvo/x11_common.c @ 25609:dc64735e7391

Remove most of the messy screensaver code in favour of only XResetScreenSaver
author reimar
date Mon, 07 Jan 2008 12:18:27 +0000
parents 3ada48a71450
children ca8190e97ac3
comparison
equal deleted inserted replaced
25608:3ada48a71450 25609:dc64735e7391
1661 static unsigned int time_last; 1661 static unsigned int time_last;
1662 1662
1663 void xscreensaver_heartbeat(void) 1663 void xscreensaver_heartbeat(void)
1664 { 1664 {
1665 unsigned int time = GetTimerMS(); 1665 unsigned int time = GetTimerMS();
1666 XEvent ev; 1666
1667 1667 if (mDisplay && screensaver_off && (time - time_last) > 30000)
1668 if (mDisplay && xs_windowid && (time - time_last) > 30000)
1669 { 1668 {
1670 time_last = time; 1669 time_last = time;
1671 1670
1672 ev.xany.type = ClientMessage; 1671 XResetScreenSaver(mDisplay);
1673 ev.xclient.display = mDisplay; 1672 }
1674 ev.xclient.window = xs_windowid;
1675 ev.xclient.message_type = screensaver;
1676 ev.xclient.format = 32;
1677 memset(&ev.xclient.data, 0, sizeof(ev.xclient.data));
1678 ev.xclient.data.l[0] = (long) deactivate;
1679
1680 mp_msg(MSGT_VO, MSGL_DBG2, "Pinging xscreensaver.\n");
1681 old_handler = XSetErrorHandler(badwindow_handler);
1682 XSendEvent(mDisplay, xs_windowid, False, 0L, &ev);
1683 XSync(mDisplay, False);
1684 XSetErrorHandler(old_handler);
1685 }
1686 }
1687
1688 static void xscreensaver_disable(Display * dpy)
1689 {
1690 mp_msg(MSGT_VO, MSGL_DBG2, "xscreensaver_disable()\n");
1691
1692 xs_windowid = find_xscreensaver_window(dpy);
1693 if (!xs_windowid)
1694 {
1695 mp_msg(MSGT_VO, MSGL_INFO, MSGTR_CouldNotFindXScreenSaver);
1696 return;
1697 }
1698 mp_msg(MSGT_VO, MSGL_INFO,
1699 "xscreensaver_disable: xscreensaver wid=%ld.\n", xs_windowid);
1700
1701 deactivate = XInternAtom(dpy, "DEACTIVATE", False);
1702 screensaver = XInternAtom(dpy, "SCREENSAVER", False);
1703 }
1704
1705 static void xscreensaver_enable(void)
1706 {
1707 xs_windowid = 0;
1708 } 1673 }
1709 1674
1710 static int xss_suspend(Bool suspend) 1675 static int xss_suspend(Bool suspend)
1711 { 1676 {
1712 #ifndef HAVE_XSS 1677 #ifndef HAVE_XSS
1763 } 1728 }
1764 } 1729 }
1765 dpms_disabled = 0; 1730 dpms_disabled = 0;
1766 } 1731 }
1767 #endif 1732 #endif
1768
1769 if (timeout_save)
1770 {
1771 int dummy, interval, prefer_blank, allow_exp;
1772
1773 XGetScreenSaver(mDisplay, &dummy, &interval, &prefer_blank,
1774 &allow_exp);
1775 XSetScreenSaver(mDisplay, timeout_save, interval, prefer_blank,
1776 allow_exp);
1777 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank,
1778 &allow_exp);
1779 timeout_save = 0;
1780 }
1781
1782 if (stop_xscreensaver)
1783 xscreensaver_enable();
1784 if (kdescreensaver_was_running && stop_xscreensaver)
1785 {
1786 system
1787 ("dcop kdesktop KScreensaverIface enable true 2>/dev/null >/dev/null");
1788 kdescreensaver_was_running = 0;
1789 }
1790
1791
1792 } 1733 }
1793 1734
1794 void saver_off(Display * mDisplay) 1735 void saver_off(Display * mDisplay)
1795 { 1736 {
1796 int nothing; 1737 int nothing;
1816 stat = DPMSDisable(mDisplay); // monitor powersave off 1757 stat = DPMSDisable(mDisplay); // monitor powersave off
1817 mp_msg(MSGT_VO, MSGL_V, "DPMSDisable stat: %d\n", stat); 1758 mp_msg(MSGT_VO, MSGL_V, "DPMSDisable stat: %d\n", stat);
1818 } 1759 }
1819 } 1760 }
1820 #endif 1761 #endif
1821 if (!timeout_save)
1822 {
1823 int interval, prefer_blank, allow_exp;
1824 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank,
1825 &allow_exp);
1826 if (timeout_save)
1827 XSetScreenSaver(mDisplay, 0, interval, prefer_blank,
1828 allow_exp);
1829 }
1830 // turning off screensaver
1831 if (stop_xscreensaver)
1832 xscreensaver_disable(mDisplay);
1833 if (stop_xscreensaver && !kdescreensaver_was_running)
1834 {
1835 kdescreensaver_was_running =
1836 (system
1837 ("dcop kdesktop KScreensaverIface isEnabled 2>/dev/null | sed 's/1/true/g' | grep true 2>/dev/null >/dev/null")
1838 == 0);
1839 if (kdescreensaver_was_running)
1840 system
1841 ("dcop kdesktop KScreensaverIface enable false 2>/dev/null >/dev/null");
1842 }
1843 } 1762 }
1844 1763
1845 static XErrorHandler old_handler = NULL; 1764 static XErrorHandler old_handler = NULL;
1846 static int selectinput_err = 0; 1765 static int selectinput_err = 0;
1847 static int x11_selectinput_errorhandler(Display * display, 1766 static int x11_selectinput_errorhandler(Display * display,