source: titan/plugins/gmediarender/gmediarender.h @ 26912

Last change on this file since 26912 was 24522, checked in by obi, 10 years ago

fix gmediarender and add debug for minidlna

File size: 3.9 KB
Line 
1#ifndef GMEDIARENDER_H
2#define GMEDIARENDER_H
3
4extern struct skin* skin;
5struct fb *fb = NULL;
6
7void gmediarendergetpic(struct skin* gmediarender, char* buf)
8{
9        char *tmpip = NULL, *pos = NULL, *pos1 = NULL, *path = NULL;
10        int port = 80;
11        printf("dlna download link: %s\n", buf);
12               
13        if(buf == NULL) return;
14
15        tmpip = string_replace("http://", "", buf, 0);
16
17        if(tmpip != NULL)
18        {
19                pos = strchr(tmpip, '/');
20                pos1 = strchr(tmpip, ':');
21        }
22        if(pos != NULL)
23        {
24                pos[0] = '\0';
25                path = pos + 1;
26        }
27        if(pos1 != NULL)
28        {
29                pos1[0] = '\0';
30                port = atoi(pos1 + 1);
31        }
32
33        if(cmpfilenameext(path, ".jpg") == 0)
34        {
35                unlink("/tmp/gmediarenderpic.jpg");
36/*
37                char* cmd = NULL;
38                cmd = ostrcat(cmd, "wget ", 1, 0);
39                cmd = ostrcat(cmd, buf, 1, 0);
40                cmd = ostrcat(cmd, " -O /tmp/gmediarenderpic.jpg", 1, 0);
41                printf("cmd: %s\n", cmd);
42                system(cmd);
43                free(cmd), cmd = NULL;
44*/
45                gethttp(tmpip, path, port, "/tmp/gmediarenderpic.jpg", NULL, 5000, NULL, 0);
46                changepic(gmediarender, "/tmp/gmediarenderpic.jpg");
47                drawscreen(gmediarender, 0, 0);
48        }
49        if(cmpfilenameext(path, ".png") == 0)
50        {
51                unlink("/tmp/gmediarenderpic.png");
52/*
53                char* cmd = NULL;
54                cmd = ostrcat(cmd, "wget ", 1, 0);
55                cmd = ostrcat(cmd, buf, 1, 0);
56                cmd = ostrcat(cmd, " -O /tmp/gmediarenderpic.png", 1, 0);
57                printf("cmd: %s\n", cmd);
58                system(cmd);
59                free(cmd), cmd = NULL;
60*/
61                gethttp(tmpip, path, port, "/tmp/gmediarenderpic.png", NULL, 5000, NULL, 0);
62                changepic(gmediarender, "/tmp/gmediarenderpic.png");
63                drawscreen(gmediarender, 0, 0);
64        }
65}
66
67void screengmediarender()
68{
69        int rcret = -1, ret = 0;
70        char* cmd = NULL, *buf = NULL;
71        char* tmpstr = NULL;
72        int fifo = -1;
73        struct skin* gmediarender = getscreen("gmediarender");
74       
75        ret = servicestop(status.aktservice, 1, 1);
76        if(ret == 1) return;
77
78        buf = malloc(MINMALLOC);
79        if(buf == NULL)
80        {
81                err("no mem");
82                return;
83        }
84
85        //create fifo
86        mkfifo("/tmp/gmediarender", 0666);
87
88        //open fifo
89        fifo = open("/tmp/gmediarender", O_RDONLY | O_NONBLOCK);
90
91        drawscreen(skin, 0, 0);
92
93        if(file_exist("/var/usr/local/share/titan/plugins/gmediarender/gmediarender.sh") == 1)
94                cmd = ostrcat(cmd, "/var/usr/local/share/titan/plugins/gmediarender/gmediarender.sh gmediarender-", 1, 0);
95        else if(file_exist("/var/swap/usr/local/share/titan/plugins/gmediarender/gmediarender.sh") == 1)
96                cmd = ostrcat(cmd, "/var/swap/usr/local/share/titan/plugins/gmediarender/gmediarender.sh gmediarender-", 1, 0);
97        else
98                cmd = ostrcat(cmd, "/mnt/swapextensions/usr/local/share/titan/plugins/gmediarender/gmediarender.sh gmediarender-", 1, 0);
99       
100        cmd = ostrcat(cmd, "/var/usr/local/share/titan/plugins/gmediarender/gmediarender.sh gmediarender-", 1, 0);
101        cmd = ostrcat(cmd, status.boxtype, 1, 0);
102        cmd = ostrcat(cmd, " &", 1, 0);
103
104        //start renderer
105        debug(10, "cmd: %s", cmd);
106        system(cmd);
107        free(cmd), cmd = NULL;
108
109        tmpstr = ostrcat(tmpstr, _("Servername"), 1, 0);
110        tmpstr = ostrcat(tmpstr, ": gmediarender-", 1, 0);
111        tmpstr = ostrcat(tmpstr, status.boxtype, 1, 0);
112        tmpstr = ostrcat(tmpstr, "\n\n", 1, 0);
113        tmpstr = ostrcat(tmpstr, _("Wait for connect or press EXIT"), 1, 0);
114
115        textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 7, 0);
116        free(tmpstr), tmpstr = NULL;
117
118        while(1)
119        {
120                rcret = waitrc(NULL, 1000, 0);
121
122                if(fifo > -1)
123                {
124                        ret = read(fifo, buf, MINMALLOC);
125                        if(ret > 0)
126                        {
127                                buf[ret] = '\0';
128                                if(ostrcmp(buf, "clear.png") == 0) //clear screen
129                                        drawscreen(skin, 0, 0);
130                                else
131                                        gmediarendergetpic(gmediarender, buf);
132                        }
133                }
134
135                if(rcret == getrcconfigint("rcexit", NULL)) break;
136                if(rcret == getrcconfigint("rcok", NULL)) break;
137        }
138
139        //stop renderer
140        system("killall -9 gmediarender");
141                       
142        if(status.lastservice != NULL)
143                servicestart(status.lastservice->channel, NULL, NULL, 0);
144
145        free(buf); buf = NULL;
146
147        //close fifo
148        close(fifo);
149        unlink("/tmp/gmediarender");
150        unlink("/tmp/gmediarenderpic.jpg");
151        unlink("/tmp/gmediarenderpic.png");
152}
153
154#endif
Note: See TracBrowser for help on using the repository browser.