~ubuntu-branches/ubuntu/trusty/powertop-1.13/trusty

« back to all changes in this revision

Viewing changes to xrandr.c

  • Committer: Package Import Robot
  • Author(s): Jamie Strandboge
  • Date: 2011-11-11 13:36:57 UTC
  • Revision ID: package-import@ubuntu.com-20111111133657-dumpedggvnmcjb2e
Tags: upstream-1.13
ImportĀ upstreamĀ versionĀ 1.13

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2007, Intel Corporation
 
3
 *
 
4
 * This file is part of PowerTOP
 
5
 *
 
6
 * This program file is free software; you can redistribute it and/or modify it
 
7
 * under the terms of the GNU General Public License as published by the
 
8
 * Free Software Foundation; version 2 of the License.
 
9
 *
 
10
 * This program is distributed in the hope that it will be useful, but WITHOUT
 
11
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 
12
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 
13
 * for more details.
 
14
 *
 
15
 * You should have received a copy of the GNU General Public License
 
16
 * along with this program in a file named COPYING; if not, write to the
 
17
 * Free Software Foundation, Inc.,
 
18
 * 51 Franklin Street, Fifth Floor,
 
19
 * Boston, MA 02110-1301 USA
 
20
 *
 
21
 * Authors:
 
22
 *      Arjan van de Ven <arjan@linux.intel.com>
 
23
 */
 
24
 
 
25
#include <unistd.h>
 
26
#include <stdio.h>
 
27
#include <stdlib.h>
 
28
#include <string.h>
 
29
#include <stdint.h>
 
30
#include <sys/types.h>
 
31
#include <dirent.h>
 
32
 
 
33
#include "powertop.h"
 
34
 
 
35
int has_no_xrandr;
 
36
 
 
37
static void activate_noTV(void)
 
38
{
 
39
        system("xrandr --auto &> /dev/null");
 
40
        system("xrandr --output TV --off &> /dev/null");
 
41
}
 
42
 
 
43
void suggest_xrandr_TV_off(void)
 
44
{
 
45
        FILE *file;
 
46
        int has_tv = 0;
 
47
        int has_tv_active = 0;
 
48
        char line[1024];
 
49
 
 
50
        if (has_no_xrandr)
 
51
                return;
 
52
 
 
53
        memset(line, 0, 1024);
 
54
        file = popen("xrandr 2> /dev/null", "r");
 
55
        if (!file || feof(file)) {
 
56
                has_no_xrandr = 1;
 
57
                return;
 
58
        }
 
59
        while (!feof(file)) {
 
60
                if (fgets(line, 1024, file)==NULL)
 
61
                        break;
 
62
                if (line[0]!=' ') {
 
63
                        if (line[0]=='T' && line[1]=='V' && line[2]==' ')
 
64
                                has_tv = 1;
 
65
                        else
 
66
                                has_tv = 0;
 
67
                } else {
 
68
                        if (strchr(line,'*') && has_tv)
 
69
                                has_tv_active = 1;
 
70
                }
 
71
 
 
72
        }
 
73
        pclose(file);
 
74
        if (has_tv_active)
 
75
                add_suggestion(_("Suggestion: disable TV out via: \n"
 
76
                                 "  xrandr --output TV --off \n"
 
77
                                 "or press the V key."),
 
78
                                35, 'V', _(" V - Disable TV out "), activate_noTV);
 
79
        /* check this only once if no suggestion needed */
 
80
        else
 
81
                has_no_xrandr = 1;
 
82
}