]> git.cworth.org Git - apitrace/blobdiff - glsize.hpp
Fix a crash when loading multiple frames at once.
[apitrace] / glsize.hpp
index a58b41e9a22f8703a585c5c118c844d48fdd660e..f5b2eb08afb339e69d4913f848a3367d921f4541 100644 (file)
@@ -594,7 +594,7 @@ __glMap2d_size(GLenum target, GLint ustride, GLint uorder, GLint vstride, GLint
 #define __glGetFramebufferAttachmentParameteriv_size __gl_param_size
 #define __glGetFramebufferAttachmentParameterivEXT_size __gl_param_size
 
-static inline size_t
+static inline unsigned
 __gl_format_channels(GLenum format) {
     switch (format) {
     case GL_COLOR_INDEX:
@@ -610,14 +610,18 @@ __gl_format_channels(GLenum format) {
     case GL_DEPTH_STENCIL:
     case GL_LUMINANCE_ALPHA:
     case GL_RG:
+    case GL_HILO_NV:
+    case GL_DSDT_NV:
         return 2;
     case GL_RGB:
     case GL_BGR:
+    case GL_DSDT_MAG_NV:
         return 3;
     case GL_RGBA:
     case GL_BGRA:
     case GL_ABGR_EXT:
     case GL_CMYK_EXT:
+    case GL_DSDT_MAG_VIB_NV:
         return 4;
     case GL_CMYKA_EXT:
         return 5;
@@ -641,9 +645,9 @@ _align(X x, Y y) {
 
 static inline size_t
 __gl_image_size(GLenum format, GLenum type, GLsizei width, GLsizei height, GLsizei depth) {
-    size_t num_channels = __gl_format_channels(format);
+    unsigned num_channels = __gl_format_channels(format);
 
-    size_t bits_per_pixel;
+    unsigned bits_per_pixel;
     switch (type) {
     case GL_BITMAP:
         bits_per_pixel = 1;
@@ -716,7 +720,7 @@ __gl_image_size(GLenum format, GLenum type, GLsizei width, GLsizei height, GLsiz
 
     size_t row_stride = (row_length*bits_per_pixel + 7)/8;
 
-    if (bits_per_pixel < alignment*8 &&
+    if ((GLint)bits_per_pixel < alignment*8 &&
         (bits_per_pixel & 7) == 0 &&
         _is_pot(bits_per_pixel)) {
         row_stride = _align(row_stride, alignment);