source: trunk/packages/vizservers/nanovis/Trace.cpp @ 3464

Last change on this file since 3464 was 3452, checked in by ldelgass, 7 years ago

Remove XINETD define from nanovis. We only support server mode now, no glut
interaction loop with mouse/keyboard handlers. Fixes for trace logging to make
output closer to vtkvis: inlcude function name for trace messages, remove
newlines from format strings in macros since newlines get added by syslog.

  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright (C) 2004-2013  HUBzero Foundation, LLC
4 *
5 * Author: George A. Howlett <gah@purdue.edu>
6 */
7#include <stdio.h>
8#include <stdarg.h>
9#include <syslog.h>
10
11#include <GL/glew.h>
12
13#include "nanovis.h"
14#include "Trace.h"
15
16#define MSG_LEN 2047
17
18void 
19LogMessage(int priority, const char *funcname,
20           const char *path, int lineNum, const char* fmt, ...)
21{
22    char message[MSG_LEN+1];
23    const char *s;
24    int length;
25    va_list lst;
26
27    va_start(lst, fmt);
28    s = strrchr(path, '/');
29    if (s == NULL) {
30        s = path;
31    } else {
32        s++;
33    }
34    if (priority & LOG_DEBUG) {
35        length = snprintf(message, MSG_LEN, "%s:%d(%s): ", s, lineNum, funcname);
36    } else {
37        length = snprintf(message, MSG_LEN, "%s:%d: ", s, lineNum);
38    }
39    length += vsnprintf(message + length, MSG_LEN - length, fmt, lst);
40    message[MSG_LEN] = '\0';
41
42    syslog(priority, "%s", message);
43}
44
45bool
46CheckFBO(GLenum *statusPtr) 
47{
48    *statusPtr = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
49    return (*statusPtr == GL_FRAMEBUFFER_COMPLETE_EXT);
50}
51
52void
53PrintFBOStatus(GLenum status, const char *prefix) 
54{
55    const char *mesg;
56    switch(status) {
57    case GL_FRAMEBUFFER_COMPLETE_EXT:
58        mesg = "<<<< OK >>>>";                                          break;
59    case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
60        mesg = "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT";              break;
61    case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
62        mesg = "GL_FRAMEBUFFER_UNSUPPORTED_EXT";                        break;
63    case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
64        mesg = "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT";      break;
65    case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
66        mesg = "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT";              break;
67    case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
68        mesg = "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT";                 break;
69    case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
70        mesg = "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT";             break;
71    case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
72        mesg = "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT";             break;
73    default:
74        TRACE("FB Status: %s: UNKNOWN framebuffer status %u", 
75               prefix, (unsigned int)status);
76        return;
77    }
78    TRACE("FB Status: %s: %s", prefix, mesg);
79}
80
81bool
82CheckGL(const char *prefix)
83{
84    const char *mesg;
85    GLenum status = (GLenum)glGetError();
86    switch(status) {
87    case GL_NO_ERROR:
88        return true;
89    case GL_INVALID_ENUM:
90        mesg = "GL_INVALID_ENUM";                       break;
91    case GL_INVALID_VALUE:
92        mesg = "GL_INVALID_VALUE";                      break;
93    case GL_INVALID_OPERATION:
94        mesg = "GL_INVALID_OPERATION";                  break;
95    case GL_STACK_OVERFLOW:
96        mesg = "GL_STACK_OVERFLOW";                     break;
97    case GL_STACK_UNDERFLOW:
98        mesg = "GL_STACK_UNDERFLOW";                    break;
99    case GL_OUT_OF_MEMORY:
100        mesg = "GL_OUT_OF_MEMORY";                      break;
101    case GL_INVALID_FRAMEBUFFER_OPERATION_EXT:
102        mesg = "GL_INVALID_FRAMEBUFFER_OPERATION_EXT";  break;
103    default:
104        TRACE("GL Status: %s: Unknown status %d", prefix, status);
105        return false;
106    } 
107    TRACE("GL Status: %s: %s", prefix, mesg);
108    return false;
109}
110
111
Note: See TracBrowser for help on using the repository browser.