~ubuntu-branches/ubuntu/raring/virtualbox-ose/raring

« back to all changes in this revision

Viewing changes to src/VBox/GuestHost/OpenGL/packer/pack_materials.c

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2011-01-30 23:27:25 UTC
  • mfrom: (0.3.12 upstream)
  • Revision ID: james.westby@ubuntu.com-20110130232725-2ouajjd2ggdet0zd
Tags: 4.0.2-dfsg-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - Add Apport hook.
    - debian/virtualbox-ose.files/source_virtualbox-ose.py
    - debian/virtualbox-ose.install
  - Drop *-source packages.
* Drop ubuntu-01-fix-build-gcc45.patch, fixed upstream.
* Drop ubuntu-02-as-needed.patch, added to the Debian package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
 
10
10
static void __handleMaterialData( GLenum face, GLenum pname, const GLfloat *params )
11
11
{
12
 
        GET_PACKER_CONTEXT(pc);
13
 
        unsigned int packet_length = sizeof( int ) + sizeof( face ) + sizeof( pname );
14
 
        unsigned int params_length = 0;
15
 
        unsigned char *data_ptr;
16
 
        switch( pname )
17
 
        {
18
 
                case GL_AMBIENT:
19
 
                case GL_DIFFUSE:
20
 
                case GL_SPECULAR:
21
 
                case GL_EMISSION:
22
 
                case GL_AMBIENT_AND_DIFFUSE:
23
 
                        params_length = 4*sizeof( *params );
24
 
                        break;
25
 
                case GL_COLOR_INDEXES:
26
 
                        params_length = 3*sizeof( *params );
27
 
                        break;
28
 
                case GL_SHININESS:
29
 
                        params_length = sizeof( *params );
30
 
                        break;
31
 
                default:
32
 
                        __PackError(__LINE__, __FILE__, GL_INVALID_ENUM, "glMaterial(pname)");
33
 
                        return;
34
 
        }
35
 
        packet_length += params_length;
 
12
    CR_GET_PACKER_CONTEXT(pc);
 
13
    unsigned int packet_length = sizeof( int ) + sizeof( face ) + sizeof( pname );
 
14
    unsigned int params_length = 0;
 
15
    unsigned char *data_ptr;
 
16
    switch( pname )
 
17
    {
 
18
        case GL_AMBIENT:
 
19
        case GL_DIFFUSE:
 
20
        case GL_SPECULAR:
 
21
        case GL_EMISSION:
 
22
        case GL_AMBIENT_AND_DIFFUSE:
 
23
            params_length = 4*sizeof( *params );
 
24
            break;
 
25
        case GL_COLOR_INDEXES:
 
26
            params_length = 3*sizeof( *params );
 
27
            break;
 
28
        case GL_SHININESS:
 
29
            params_length = sizeof( *params );
 
30
            break;
 
31
        default:
 
32
            __PackError(__LINE__, __FILE__, GL_INVALID_ENUM, "glMaterial(pname)");
 
33
            return;
 
34
    }
 
35
    packet_length += params_length;
36
36
 
37
 
        GET_BUFFERED_POINTER(pc, packet_length );
38
 
        WRITE_DATA( 0, int, packet_length );
39
 
        WRITE_DATA( sizeof( int ) + 0, GLenum, face );
40
 
        WRITE_DATA( sizeof( int ) + 4, GLenum, pname );
41
 
        WRITE_DATA( sizeof( int ) + 8, GLfloat, params[0] );
42
 
        if (params_length > sizeof( *params )) 
43
 
        {
44
 
                WRITE_DATA( sizeof( int ) + 12, GLfloat, params[1] );
45
 
                WRITE_DATA( sizeof( int ) + 16, GLfloat, params[2] );
46
 
        }
47
 
        if (packet_length > 3*sizeof( *params ) ) 
48
 
        {
49
 
                WRITE_DATA( sizeof( int ) + 20, GLfloat, params[3] );
50
 
        }
 
37
    CR_GET_BUFFERED_POINTER(pc, packet_length );
 
38
    WRITE_DATA( 0, int, packet_length );
 
39
    WRITE_DATA( sizeof( int ) + 0, GLenum, face );
 
40
    WRITE_DATA( sizeof( int ) + 4, GLenum, pname );
 
41
    WRITE_DATA( sizeof( int ) + 8, GLfloat, params[0] );
 
42
    if (params_length > sizeof( *params )) 
 
43
    {
 
44
        WRITE_DATA( sizeof( int ) + 12, GLfloat, params[1] );
 
45
        WRITE_DATA( sizeof( int ) + 16, GLfloat, params[2] );
 
46
    }
 
47
    if (packet_length > 3*sizeof( *params ) ) 
 
48
    {
 
49
        WRITE_DATA( sizeof( int ) + 20, GLfloat, params[3] );
 
50
    }
51
51
}
52
52
 
53
53
void PACK_APIENTRY crPackMaterialfv(GLenum face, GLenum pname, const GLfloat *params)
54
54
{
55
 
        GET_PACKER_CONTEXT(pc);
56
 
        __handleMaterialData( face, pname, params );
57
 
        WRITE_OPCODE( pc, CR_MATERIALFV_OPCODE );
 
55
    CR_GET_PACKER_CONTEXT(pc);
 
56
    __handleMaterialData( face, pname, params );
 
57
    WRITE_OPCODE( pc, CR_MATERIALFV_OPCODE );
 
58
    CR_UNLOCK_PACKER_CONTEXT(pc);
58
59
}
59
60
 
60
61
void PACK_APIENTRY crPackMaterialiv(GLenum face, GLenum pname, const GLint *params)
61
62
{
62
 
        /* floats and ints are the same size, so the packing should be the same */
63
 
        GET_PACKER_CONTEXT(pc);
64
 
        __handleMaterialData( face, pname, (const GLfloat *) params );
65
 
        WRITE_OPCODE( pc, CR_MATERIALIV_OPCODE );
 
63
    /* floats and ints are the same size, so the packing should be the same */
 
64
    CR_GET_PACKER_CONTEXT(pc);
 
65
    __handleMaterialData( face, pname, (const GLfloat *) params );
 
66
    WRITE_OPCODE( pc, CR_MATERIALIV_OPCODE );
 
67
    CR_UNLOCK_PACKER_CONTEXT(pc);
66
68
}