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

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