1{% extends "base/wrap.c.j2" %} 2{% block headers %} 3#include <sys/syscall.h> 4#include <unistd.h> 5#include <string.h> 6#include <stdio.h> 7{{ super() }} 8 9{% endblock %} 10 11{% block main %} 12{{ super() }} 13 14snd_config_t *snd_config = NULL; 15 16__GLXextFuncPtr glXGetProcAddressARB(const GLubyte *name) { 17 {% for func in functions %} 18 {% if not func.name.startswith('snd_') %} 19 if (strcmp(name, "{{ func.name }}") == 0) { 20 return (void *){{ func.name }}; 21 } 22 {% endif %} 23 {% endfor %} 24 printf("glXGetProcAddress(%s) not found\n", name); 25 return NULL; 26} 27 28__GLXextFuncPtr glXGetProcAddress(const GLubyte *name) { 29 return glXGetProcAddressARB(name); 30} 31{% endblock %} 32 33{% block definition %} 34#if !defined(skip_client_{{ func.name }}) && !defined(skip_index_{{ func.name }}) 35{{ super() -}} 36#endif 37{% endblock %} 38 39{% block call %} 40 {{ func.name }}_INDEXED packed_data; 41 packed_data.func = {{ func.name }}_INDEX; 42 {% for arg in func.args %} 43 packed_data.args.a{{ loop.index }} = ({{ arg.type|unconst }}){{ arg.name }}; 44 {% endfor %} 45 {% if not func.void %} 46 {{ func.return }} ret; 47 syscall(SYS_proxy, (void *)&packed_data, &ret); 48 return ret; 49 {% else %} 50 syscall(SYS_proxy, (void *)&packed_data, NULL); 51 {% endif %} 52{% endblock %} 53