source: neercs/trunk/src/wm.c @ 3929

Last change on this file since 3929 was 3929, checked in by jylam, 5 years ago
  • Use new caca_fill_triangle_textured API, fix backface culling bug, add warning if D_HAVE_TEXTURED_TRIANGLE is missing
  • Property svn:keywords set to Id
File size: 24.4 KB
Line 
1/*
2 *  neercs        console-based window manager
3 *  Copyright (c) 2006 Sam Hocevar <sam@zoy.org>
4 *                2008 Jean-Yves Lamoureux <jylam@lnxscene.org>
5 *                All Rights Reserved
6 *
7 *  $Id$
8 *
9 *  This program is free software. It comes without any warranty, to
10 *  the extent permitted by applicable law. You can redistribute it
11 *  and/or modify it under the terms of the Do What The Fuck You Want
12 *  To Public License, Version 2, as published by Sam Hocevar. See
13 *  http://sam.zoy.org/wtfpl/COPYING for more details.
14 */
15
16#include "config.h"
17
18#include <stdio.h>
19#include <caca.h>
20#include <caca.h>
21#include <stdlib.h>
22#include <math.h>
23
24#include "neercs.h"
25
26
27void resize_screen(struct screen *s, int w, int h)
28{
29    caca_canvas_t *old, *new;
30   
31    if(w==s->w && h==s->h) return;
32    if(w <= 0 || h <= 0) return;
33   
34    s->changed = 1;
35   
36    s->w = w;
37    s->h = h;
38   
39    /* caca_set_canvas_boundaries() is bugged as hell,
40     * so let's resize it by hands */
41    old = s->cv;
42    new = caca_create_canvas(w, h);
43    caca_blit(new, 0, 0, old, NULL);
44    s->cv = new;
45    caca_gotoxy(new, caca_get_cursor_x(old), caca_get_cursor_y(old));
46    caca_free_canvas(old);
47    set_tty_size(s->fd, w, h);
48   
49    s->orig_w = s->w;
50    s->orig_h = s->h;
51    s->orig_x = s->x;
52    s->orig_y = s->y;
53}
54
55void update_windows_props(struct screen_list *screen_list)
56{
57    debug("%s, %d screens, type %d\n", __FUNCTION__, screen_list->count, screen_list->wm_type);
58   
59    if(!screen_list->count) return;
60   
61    switch(screen_list->wm_type)
62    {
63        case WM_CARD:
64            update_windows_props_cards(screen_list);
65            break;
66        case WM_HSPLIT:
67            update_windows_props_hsplit(screen_list);
68            break;
69        case WM_VSPLIT:
70            update_windows_props_vsplit(screen_list);
71            break;
72        case WM_FULL:
73        case WM_CUBE:
74        default:
75            update_windows_props_full(screen_list);
76            break;
77    }
78}
79
80void update_windows_props_hsplit(struct screen_list *screen_list)
81{
82    int i;
83    int w = (screen_list->width / screen_list->count) - 1;
84    int h = screen_list->height - 2;
85   
86    for(i = 0; i < screen_list->count; i++)
87    {
88        screen_list->screen[i]->x = (i*w)+1;
89        screen_list->screen[i]->y = 1;
90        screen_list->screen[i]->visible = 1;
91        if(i != screen_list->count -1)
92        {
93            resize_screen(screen_list->screen[i],
94                          w - 1, h);
95        } else {
96            resize_screen(screen_list->screen[i],
97                          screen_list->width - i*w - 2,
98                          h);
99        }
100    }
101}
102
103void update_windows_props_vsplit(struct screen_list *screen_list)
104{
105    int i;
106    int w = screen_list->width - 2;
107    int h = (screen_list->height) / screen_list->count;
108   
109    for(i = 0; i < screen_list->count; i++)
110    {
111        screen_list->screen[i]->x = 1;
112        screen_list->screen[i]->y = (i*h) + 1;
113        screen_list->screen[i]->visible = 1;
114        if(i != screen_list->count -1)
115        {
116            resize_screen(screen_list->screen[i],
117                          w, h - 2);
118        } else {
119            resize_screen(screen_list->screen[i],
120                          w,
121                          screen_list->height - i*h - 2);
122        }
123    }
124}
125
126
127void update_windows_props_full(struct screen_list *screen_list)
128{
129    int i;
130    int w = screen_list->width - 2;
131    int h = screen_list->height - 2;
132   
133    for(i = 0; i < screen_list->count; i++)
134    {
135        screen_list->screen[i]->visible = 0;
136        screen_list->screen[i]->x = 1;
137        screen_list->screen[i]->y = 1;
138       
139        resize_screen(screen_list->screen[i],
140                      w, h);
141    }
142    screen_list->screen[screen_list->pty]->visible = 1;
143}
144
145
146void update_windows_props_cards(struct screen_list *screen_list)
147{
148    int i;
149    int w = (screen_list->width  - screen_list->count*3) + 1;
150    int h = (screen_list->height - screen_list->count) - 1;
151    int x = 1;
152    int y = screen_list->count;
153   
154    for(i = 0; i < screen_list->count; i++)
155    {
156        screen_list->screen[i]->visible = 1;
157        screen_list->screen[i]->x = x;
158        screen_list->screen[i]->y = y;
159       
160        resize_screen(screen_list->screen[i],
161                      w, h);
162        x += 3;
163        y--;
164    }
165}
166
167/* Window managers refresh */
168
169void wm_refresh(struct screen_list *screen_list) 
170{
171    switch (screen_list->wm_type) {
172        case WM_CARD:
173            wm_refresh_card(screen_list);
174            break;
175        case WM_FULL:
176            wm_refresh_full(screen_list);
177            break;
178        case WM_HSPLIT:
179            wm_refresh_hsplit(screen_list);
180            break;
181        case WM_VSPLIT:
182            wm_refresh_hsplit(screen_list);
183            break;
184        case WM_CUBE:
185            wm_refresh_cube(screen_list);
186            break;
187        default:
188            wm_refresh_full(screen_list);
189            break;
190    }
191}
192
193void wm_refresh_card(struct screen_list *screen_list)
194{
195    int i;
196   
197    for(i = screen_list->count - 1; i >=0; i--)
198    {
199        if(i!=screen_list->pty && screen_list->screen[i]->visible && 
200           (screen_list->screen[i]->changed || screen_list->changed))
201        {
202            caca_blit(screen_list->cv,
203                      screen_list->screen[i]->x,
204                      screen_list->screen[i]->y,
205                      screen_list->screen[i]->cv, NULL);
206           
207            caca_draw_cp437_box(screen_list->cv,
208                                screen_list->screen[i]->x - 1,
209                                screen_list->screen[i]->y - 1,
210                                screen_list->screen[i]->w + 2,
211                                screen_list->screen[i]->h + 2);
212            if(screen_list->screen[i]->title)
213                caca_printf(screen_list->cv,
214                            screen_list->screen[i]->x,
215                            screen_list->screen[i]->y - 1,
216                            " %.*s ",
217                            screen_list->screen[i]->w - 3,
218                            screen_list->screen[i]->title);
219        }
220    }
221   
222    if(screen_list->screen[screen_list->pty]->changed || screen_list->changed)
223        caca_blit(screen_list->cv,
224                  screen_list->screen[screen_list->pty]->x,
225                  screen_list->screen[screen_list->pty]->y,
226                  screen_list->screen[screen_list->pty]->cv, NULL);
227   
228    if(screen_list->screen[screen_list->pty]->bell)
229    {
230        caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
231        screen_list->screen[screen_list->pty]->bell = 0;
232        screen_list->in_bell--;
233    }
234    else
235    {
236        caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
237    }
238   
239    caca_draw_cp437_box(screen_list->cv,
240                        screen_list->screen[screen_list->pty]->x - 1,
241                        screen_list->screen[screen_list->pty]->y - 1,
242                        screen_list->screen[screen_list->pty]->w + 2,
243                        screen_list->screen[screen_list->pty]->h + 2);
244   
245    if(screen_list->screen[screen_list->pty]->title)
246    {
247        caca_printf(screen_list->cv,
248                    screen_list->screen[screen_list->pty]->x,
249                    screen_list->screen[screen_list->pty]->y - 1,
250                    " %.*s ",
251                    screen_list->screen[screen_list->pty]->w - 3,
252                    screen_list->screen[screen_list->pty]->title);
253    }
254   
255   
256}
257
258
259void wm_refresh_full(struct screen_list *screen_list)
260{
261    if(screen_list->screen[screen_list->pty]->changed || screen_list->changed)
262        caca_blit(screen_list->cv,
263                  screen_list->screen[screen_list->pty]->x,
264                  screen_list->screen[screen_list->pty]->y,
265                  screen_list->screen[screen_list->pty]->cv, NULL);
266   
267    if(screen_list->screen[screen_list->pty]->bell)
268    {
269        caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
270        screen_list->screen[screen_list->pty]->bell = 0;
271        screen_list->in_bell--;
272    }
273    else
274    {
275        caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
276    }
277   
278    caca_draw_cp437_box(screen_list->cv,
279                        screen_list->screen[screen_list->pty]->x - 1,
280                        screen_list->screen[screen_list->pty]->y - 1,
281                        screen_list->screen[screen_list->pty]->w + 2,
282                        screen_list->screen[screen_list->pty]->h + 2);
283   
284    if(screen_list->screen[screen_list->pty]->title)
285    {
286        caca_printf(screen_list->cv,
287                    screen_list->screen[screen_list->pty]->x,
288                    screen_list->screen[screen_list->pty]->y - 1,
289                    " %.*s ",
290                    screen_list->screen[screen_list->pty]->w - 3,
291                    screen_list->screen[screen_list->pty]->title);
292    }
293   
294   
295}
296
297void wm_refresh_vsplit(struct screen_list *screen_list)
298{
299    int i;
300   
301    for(i = screen_list->count - 1; i >=0; i--)
302    {
303        if(i!=screen_list->pty && screen_list->screen[i]->visible && 
304           (screen_list->screen[i]->changed || screen_list->changed))
305        {
306            caca_blit(screen_list->cv,
307                      screen_list->screen[i]->x,
308                      screen_list->screen[i]->y,
309                      screen_list->screen[i]->cv, NULL);
310           
311            caca_draw_cp437_box(screen_list->cv,
312                                screen_list->screen[i]->x - 1,
313                                screen_list->screen[i]->y - 1,
314                                screen_list->screen[i]->w + 2,
315                                screen_list->screen[i]->h + 2);
316            if(screen_list->screen[i]->title)
317                caca_printf(screen_list->cv,
318                            screen_list->screen[i]->x,
319                            screen_list->screen[i]->y - 1,
320                            " %.*s ",
321                            screen_list->screen[i]->w - 3,
322                            screen_list->screen[i]->title);
323        }
324    }
325   
326    if(screen_list->screen[screen_list->pty]->changed || screen_list->changed)
327        caca_blit(screen_list->cv,
328                  screen_list->screen[screen_list->pty]->x,
329                  screen_list->screen[screen_list->pty]->y,
330                  screen_list->screen[screen_list->pty]->cv, NULL);
331   
332    if(screen_list->screen[screen_list->pty]->bell)
333    {
334        caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
335        screen_list->screen[screen_list->pty]->bell = 0;
336        screen_list->in_bell--;
337    }
338    else
339    {
340        caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
341    }
342   
343    caca_draw_cp437_box(screen_list->cv,
344                        screen_list->screen[screen_list->pty]->x - 1,
345                        screen_list->screen[screen_list->pty]->y - 1,
346                        screen_list->screen[screen_list->pty]->w + 2,
347                        screen_list->screen[screen_list->pty]->h + 2);
348   
349    if(screen_list->screen[screen_list->pty]->title)
350    {
351        caca_printf(screen_list->cv,
352                    screen_list->screen[screen_list->pty]->x,
353                    screen_list->screen[screen_list->pty]->y - 1,
354                    " %.*s ",
355                    screen_list->screen[screen_list->pty]->w - 3,
356                    screen_list->screen[screen_list->pty]->title);
357    }
358   
359   
360}
361
362void wm_refresh_hsplit(struct screen_list *screen_list)
363{
364    int i;
365   
366    for(i = screen_list->count - 1; i >=0; i--)
367    {
368        if(i!=screen_list->pty && screen_list->screen[i]->visible && 
369           (screen_list->screen[i]->changed || screen_list->changed))
370        {
371            caca_blit(screen_list->cv,
372                      screen_list->screen[i]->x,
373                      screen_list->screen[i]->y,
374                      screen_list->screen[i]->cv, NULL);
375           
376            caca_draw_cp437_box(screen_list->cv,
377                                screen_list->screen[i]->x - 1,
378                                screen_list->screen[i]->y - 1,
379                                screen_list->screen[i]->w + 2,
380                                screen_list->screen[i]->h + 2);
381            if(screen_list->screen[i]->title)
382                caca_printf(screen_list->cv,
383                            screen_list->screen[i]->x,
384                            screen_list->screen[i]->y - 1,
385                            " %.*s ",
386                            screen_list->screen[i]->w - 3,
387                            screen_list->screen[i]->title);
388        }
389    }
390   
391    if(screen_list->screen[screen_list->pty]->changed || screen_list->changed)
392        caca_blit(screen_list->cv,
393                  screen_list->screen[screen_list->pty]->x,
394                  screen_list->screen[screen_list->pty]->y,
395                  screen_list->screen[screen_list->pty]->cv, NULL);
396   
397    if(screen_list->screen[screen_list->pty]->bell)
398    {
399        caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
400        screen_list->screen[screen_list->pty]->bell = 0;
401        screen_list->in_bell--;
402    }
403    else
404    {
405        caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
406    }
407   
408    caca_draw_cp437_box(screen_list->cv,
409                        screen_list->screen[screen_list->pty]->x - 1,
410                        screen_list->screen[screen_list->pty]->y - 1,
411                        screen_list->screen[screen_list->pty]->w + 2,
412                        screen_list->screen[screen_list->pty]->h + 2);
413   
414    if(screen_list->screen[screen_list->pty]->title)
415    {
416        caca_printf(screen_list->cv,
417                    screen_list->screen[screen_list->pty]->x,
418                    screen_list->screen[screen_list->pty]->y - 1,
419                    " %.*s ",
420                    screen_list->screen[screen_list->pty]->w - 3,
421                    screen_list->screen[screen_list->pty]->title);
422    }
423   
424   
425}
426
427#if defined HAVE_CACA_TRIANGLE_TEXTURING
428static float get_direction(float p1x, float p1y, float p2x, float p2y, float p3x, float p3y)
429{
430    float d1x, d1y, d2x, d2y;
431   
432        d1x = p3x - p1x;
433        d1y = p3y - p1y;
434        d2x = p3x - p2x;
435        d2y = p3y - p2y;
436    return (d1x * d2y) - (d1y * d2x);
437}
438#endif
439
440/* 3D Cube. Yeah I know, it's a mess. Just look anywhere else. */
441void wm_refresh_cube(struct screen_list *screen_list)
442{
443    int i;
444   
445    if(!screen_list->cube.in_switch) {
446        wm_refresh_full(screen_list);
447        screen_list->force_refresh = 0;
448    } else {
449       
450#define CUBE_TIME 1000000
451       
452       
453       
454        long long unsigned int cur_time = get_us() - screen_list->last_switch;
455       
456        if(cur_time >= CUBE_TIME || screen_list->count==1) {
457            screen_list->changed = 1 ;     
458            screen_list->force_refresh = 1;
459            screen_list->cube.in_switch = 0;
460        } else {
461           
462            float cube[12][3] = {
463                {-1, -1,  1}, 
464                {1,  -1,  1}, 
465                {1,   1,  1}, 
466                {-1,  1,  1}, 
467               
468                {1,  -1,  1}, 
469                {1,  -1,  -1}, 
470                {1,   1,  -1}, 
471                {1,   1,  1},
472               
473                {-1,  -1,  1}, 
474                {-1,  -1,  -1}, 
475                {-1,   1,  -1}, 
476                {-1,   1,  1},
477            };
478            float cube_transformed[12][3];
479            float cube_projected[12][2];
480            float fov = 0.5f;
481            float angle = 90.0f * ((float)cur_time / (float)CUBE_TIME);
482            angle*= (M_PI/180.0f);
483           
484            if(screen_list->cube.side==1)
485                angle = -angle;
486           
487            for(i = 0; i < 12; i++) {
488               
489                cube_transformed[i][2] = cube[i][2]*cos(angle) - cube[i][0]*sin(angle);
490                cube_transformed[i][0] = cube[i][2]*sin(angle) + cube[i][0]*cos(angle);
491                cube_transformed[i][1] = cube[i][1];
492               
493                cube_transformed[i][2] -= 3;
494               
495                cube_projected[i][0] = cube_transformed[i][0] / (cube_transformed[i][2] * fov);   
496                cube_projected[i][1] = cube_transformed[i][1] / (cube_transformed[i][2] * fov); 
497               
498                cube_projected[i][0] /=2.0f; cube_projected[i][1] /=2.0f;
499                cube_projected[i][0] +=0.5f; cube_projected[i][1] +=0.5f;
500               
501                cube_projected[i][0] *= screen_list->width;
502                cube_projected[i][1] *= screen_list->height;
503               
504               
505            }
506            caca_set_color_ansi(screen_list->cv, CACA_WHITE, CACA_BLACK);
507            caca_clear_canvas(screen_list->cv);
508           
509#if defined HAVE_CACA_TRIANGLE_TEXTURING
510
511            caca_canvas_t *first =  screen_list->screen[screen_list->prevpty]->cv;
512            caca_canvas_t *second = screen_list->screen[screen_list->pty]->cv;
513           
514            int coords[6];
515            float uv[6];
516           
517           
518            if(get_direction(cube_projected[0][0], cube_projected[0][1], 
519                             cube_projected[1][0], cube_projected[1][1], 
520                             cube_projected[2][0], cube_projected[2][1]) >=0) {
521                coords[0] = cube_projected[0][0];  coords[1] = cube_projected[0][1];
522                coords[2] = cube_projected[1][0];  coords[3] = cube_projected[1][1], 
523                coords[4] = cube_projected[2][0];  coords[5] = cube_projected[2][1],
524                uv[0] = 1;  uv[1] = 1;
525                uv[2] = 0;  uv[3] = 1;
526                uv[4] = 0;  uv[5] = 0;
527                caca_fill_triangle_textured(screen_list->cv, 
528                                            coords,
529                                            first,
530                                            uv);
531               
532                coords[0] = cube_projected[0][0];  coords[1] = cube_projected[0][1];
533                coords[2] = cube_projected[2][0];  coords[3] = cube_projected[2][1], 
534                coords[4] = cube_projected[3][0];  coords[5] = cube_projected[3][1],
535                uv[0] = 1;  uv[1] = 1;
536                uv[2] = 0;  uv[3] = 0;
537                uv[4] = 1;  uv[5] = 0;     
538                caca_fill_triangle_textured(screen_list->cv, 
539                                            coords, 
540                                            first,
541                                            uv);
542                caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
543                caca_draw_thin_line(screen_list->cv, 
544                                    cube_projected[0][0], cube_projected[0][1], 
545                                    cube_projected[1][0], cube_projected[1][1]);
546                caca_draw_thin_line(screen_list->cv, 
547                                    cube_projected[1][0], cube_projected[1][1], 
548                                    cube_projected[2][0], cube_projected[2][1]);
549                caca_draw_thin_line(screen_list->cv, 
550                                    cube_projected[2][0], cube_projected[2][1], 
551                                    cube_projected[3][0], cube_projected[3][1]);
552                caca_draw_thin_line(screen_list->cv, 
553                                    cube_projected[3][0], cube_projected[3][1], 
554                                    cube_projected[0][0], cube_projected[0][1]);
555            }
556           
557           
558           
559            if(screen_list->cube.side) 
560            {
561                if(get_direction(cube_projected[4][0], cube_projected[4][1], 
562                                 cube_projected[5][0], cube_projected[5][1], 
563                                 cube_projected[6][0], cube_projected[6][1]) >=0) {
564                    coords[0] = cube_projected[4][0];  coords[1] = cube_projected[4][1];
565                    coords[2] = cube_projected[5][0];  coords[3] = cube_projected[5][1], 
566                    coords[4] = cube_projected[6][0];  coords[5] = cube_projected[6][1],
567                    uv[0] = 1;  uv[1] = 1;
568                    uv[2] = 0;  uv[3] = 1;
569                    uv[4] = 0;  uv[5] = 0;
570                   
571                   
572                        caca_fill_triangle_textured(screen_list->cv, 
573                                                coords,
574                                                second,
575                                                uv);
576                    coords[0] = cube_projected[4][0];  coords[1] = cube_projected[4][1];
577                    coords[2] = cube_projected[6][0];  coords[3] = cube_projected[6][1], 
578                    coords[4] = cube_projected[7][0];  coords[5] = cube_projected[7][1],
579                    uv[0] = 1;  uv[1] = 1;
580                    uv[2] = 0;  uv[3] = 0;
581                    uv[4] = 1;  uv[5] = 0;     
582                        caca_fill_triangle_textured(screen_list->cv, 
583                                                coords,
584                                                second,
585                                                uv);
586                    caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
587                   
588                    caca_draw_thin_line(screen_list->cv, 
589                                        cube_projected[4][0], cube_projected[4][1], 
590                                        cube_projected[5][0], cube_projected[5][1]);
591                    caca_draw_thin_line(screen_list->cv, 
592                                        cube_projected[5][0], cube_projected[5][1], 
593                                        cube_projected[6][0], cube_projected[6][1]);
594                    caca_draw_thin_line(screen_list->cv, 
595                                        cube_projected[6][0], cube_projected[6][1], 
596                                        cube_projected[7][0], cube_projected[7][1]);
597                    caca_draw_thin_line(screen_list->cv, 
598                                        cube_projected[7][0], cube_projected[7][1], 
599                                        cube_projected[4][0], cube_projected[4][1]);
600                }
601               
602               
603            } else 
604            {
605                if(get_direction(cube_projected[9][0], cube_projected[9][1], 
606                                 cube_projected[8][0], cube_projected[8][1], 
607                                 cube_projected[10][0], cube_projected[10][1]) > 0.0f) {
608                    coords[0] = cube_projected[9][0];  coords[1] = cube_projected[9][1];
609                    coords[2] = cube_projected[8][0];  coords[3] = cube_projected[8][1], 
610                    coords[4] = cube_projected[10][0];  coords[5] = cube_projected[10][1],
611                    uv[0] = 1;  uv[1] = 1;
612                    uv[2] = 0;  uv[3] = 1;
613                    uv[4] = 1;  uv[5] = 0;
614                   
615                    caca_fill_triangle_textured(screen_list->cv, 
616                                                coords,
617                                                second,
618                                                uv);
619                   
620                    coords[0] = cube_projected[8][0];  coords[1] = cube_projected[8][1];
621                    coords[2] = cube_projected[10][0];  coords[3] = cube_projected[10][1], 
622                    coords[4] = cube_projected[11][0];  coords[5] = cube_projected[11][1],
623                    uv[0] = 0;  uv[1] = 1;
624                    uv[2] = 1;  uv[3] = 0;
625                    uv[4] = 0;  uv[5] = 0;
626                   
627                    caca_fill_triangle_textured(screen_list->cv, 
628                                                coords,
629                                                second,
630                                                uv);
631                    caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
632                    caca_draw_thin_line(screen_list->cv, 
633                                        cube_projected[8][0], cube_projected[8][1], 
634                                        cube_projected[9][0], cube_projected[9][1]);
635                    caca_draw_thin_line(screen_list->cv, 
636                                        cube_projected[9][0], cube_projected[9][1], 
637                                        cube_projected[10][0], cube_projected[10][1]);
638                    caca_draw_thin_line(screen_list->cv, 
639                                        cube_projected[10][0], cube_projected[10][1], 
640                                        cube_projected[11][0], cube_projected[11][1]);
641                    caca_draw_thin_line(screen_list->cv, 
642                                        cube_projected[11][0], cube_projected[11][1], 
643                                        cube_projected[8][0], cube_projected[8][1]);
644                }
645            }
646#else
647#   warning temporary : HAVE_CACA_TRIANGLE_TEXTURING is not defined
648#endif
649           
650            screen_list->changed =1 ;     
651            screen_list->force_refresh = 1;
652            screen_list->cube.in_switch = 1;
653        }
654       
655    }
656}
657
Note: See TracBrowser for help on using the repository browser.