_X_HIDDEN __GLXdisplayPrivate * __glXInitialize(Display * dpy) { XExtDisplayInfo *info = __glXFindDisplay(dpy); XExtData **privList, *private, *found; __GLXdisplayPrivate *dpyPriv; XEDataObject dataObj; int major, minor; if (!XextHasExtension(info)) return NULL; /* See if a display private already exists. If so, return it */ dataObj.display = dpy; privList = XEHeadOfExtensionList(dataObj); found = XFindOnExtensionList(privList, info->codes->extension); if (found) return (__GLXdisplayPrivate *) found->private_data; /* See if the versions are compatible */ if (!QueryVersion(dpy, info->codes->major_opcode, &major, &minor)) return NULL; /* ** Allocate memory for all the pieces needed for this buffer. */ private = (XExtData *) Xmalloc(sizeof(XExtData));
// 查询油量检测盒版本请求 int COil::Deal3713(byte *v_szData, int v_dwDataLen) { char buf[100] = {0}; int len = 0; if( !QueryVersion((char*)buf, sizeof(buf), len) ) { // 向中心应答 char szbuf[1024] = {0}; int ilen = 0; g_objSms.MakeSmsFrame(buf, len, 0x37, 0x53, szbuf,sizeof(szbuf),ilen,CVT_8TO7); g_objSock.SOCKSNDSMSDATA(szbuf,ilen,LV12,DATASYMB_SMSBACKUP); return 0; } return 1; }
/* ** Initialize the client side extension code. */ _X_HIDDEN __GLXdisplayPrivate * __glXInitialize(Display * dpy) { XExtDisplayInfo *info = __glXFindDisplay(dpy); XExtData **privList, *private, *found; __GLXdisplayPrivate *dpyPriv; XEDataObject dataObj; int major, minor; #ifdef GLX_DIRECT_RENDERING Bool glx_direct, glx_accel; #endif /* The one and only long long lock */ __glXLock(); if (!XextHasExtension(info)) { /* No GLX extension supported by this server. Oh well. */ __glXUnlock(); XMissingExtension(dpy, __glXExtensionName); return 0; } /* See if a display private already exists. If so, return it */ dataObj.display = dpy; privList = XEHeadOfExtensionList(dataObj); found = XFindOnExtensionList(privList, info->codes->extension); if (found) { __glXUnlock(); return (__GLXdisplayPrivate *) found->private_data; } /* See if the versions are compatible */ if (!QueryVersion(dpy, info->codes->major_opcode, &major, &minor)) { /* The client and server do not agree on versions. Punt. */ __glXUnlock(); return 0; } /* ** Allocate memory for all the pieces needed for this buffer. */ private = (XExtData *) Xmalloc(sizeof(XExtData));
/* ** Initialize the client side extension code. */ _X_HIDDEN struct glx_display * __glXInitialize(Display * dpy) { struct glx_display *dpyPriv, *d; #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) Bool glx_direct, glx_accel; #endif int i; _XLockMutex(_Xglobal_lock); for (dpyPriv = glx_displays; dpyPriv; dpyPriv = dpyPriv->next) { if (dpyPriv->dpy == dpy) { _XUnlockMutex(_Xglobal_lock); return dpyPriv; } } /* Drop the lock while we create the display private. */ _XUnlockMutex(_Xglobal_lock); dpyPriv = calloc(1, sizeof *dpyPriv); if (!dpyPriv) return NULL; dpyPriv->codes = XInitExtension(dpy, __glXExtensionName); if (!dpyPriv->codes) { free(dpyPriv); _XUnlockMutex(_Xglobal_lock); return NULL; } dpyPriv->dpy = dpy; dpyPriv->majorOpcode = dpyPriv->codes->major_opcode; dpyPriv->serverGLXvendor = 0x0; dpyPriv->serverGLXversion = 0x0; /* See if the versions are compatible. This GLX implementation does not * work with servers that only support GLX 1.0. */ if (!QueryVersion(dpy, dpyPriv->majorOpcode, &dpyPriv->majorVersion, &dpyPriv->minorVersion) || (dpyPriv->majorVersion == 1 && dpyPriv->minorVersion < 1)) { free(dpyPriv); _XUnlockMutex(_Xglobal_lock); return NULL; } for (i = 0; i < __GLX_NUMBER_EVENTS; i++) { XESetWireToEvent(dpy, dpyPriv->codes->first_event + i, __glXWireToEvent); XESetEventToWire(dpy, dpyPriv->codes->first_event + i, __glXEventToWire); } XESetCloseDisplay(dpy, dpyPriv->codes->extension, __glXCloseDisplay); XESetErrorString (dpy, dpyPriv->codes->extension,__glXErrorString); dpyPriv->glXDrawHash = __glxHashCreate(); #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) glx_direct = (getenv("LIBGL_ALWAYS_INDIRECT") == NULL); glx_accel = (getenv("LIBGL_ALWAYS_SOFTWARE") == NULL); dpyPriv->drawHash = __glxHashCreate(); /* ** Initialize the direct rendering per display data and functions. ** Note: This _must_ be done before calling any other DRI routines ** (e.g., those called in AllocAndFetchScreenConfigs). */ if (glx_direct && glx_accel) { #if defined(HAVE_DRI3) if (!getenv("LIBGL_DRI3_DISABLE")) dpyPriv->dri3Display = dri3_create_display(dpy); #endif dpyPriv->dri2Display = dri2CreateDisplay(dpy); dpyPriv->driDisplay = driCreateDisplay(dpy); } if (glx_direct) dpyPriv->driswDisplay = driswCreateDisplay(dpy); #endif #ifdef GLX_USE_APPLEGL if (!applegl_create_display(dpyPriv)) { free(dpyPriv); return NULL; } #endif if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) { free(dpyPriv); return NULL; } __glX_send_client_info(dpyPriv); /* Grab the lock again and add the dispay private, unless somebody * beat us to initializing on this display in the meantime. */ _XLockMutex(_Xglobal_lock); for (d = glx_displays; d; d = d->next) { if (d->dpy == dpy) { _XUnlockMutex(_Xglobal_lock); glx_display_free(dpyPriv); return d; } } dpyPriv->next = glx_displays; glx_displays = dpyPriv; _XUnlockMutex(_Xglobal_lock); return dpyPriv; }
// // Constructor // CExtensionRegistry::CExtensionRegistry(): CRegistry( false ) { OpenGL_1_1 = QueryVersion( 1, 1 ); OpenGL_1_2 = QueryVersion( 1, 2 ); OpenGL_1_3 = QueryVersion( 1, 3 ); OpenGL_1_4 = QueryVersion( 1, 4 ); OpenGL_1_5 = QueryVersion( 1, 5 ); OpenGL_2_0 = QueryVersion( 2, 0 ); OpenGL_2_1 = QueryVersion( 2, 1 ); OpenGL_3_0 = QueryVersion( 3, 0 ); AMD_performance_monitor = QueryExtension( "GL_AMD_performance_monitor" ); AMDX_vertex_shader_tesselator = QueryExtension( "GL_AMDX_vertex_shader_tesselator" ); ARB_color_buffer_float = QueryExtension( "GL_ARB_color_buffer_float" ); ARB_depth_texture = QueryExtension( "GL_ARB_depth_texture" ); ARB_draw_buffers = QueryExtension( "GL_ARB_draw_buffers" ); ARB_fragment_program = QueryExtension( "GL_ARB_fragment_program" ); ARB_fragment_program_shadow = QueryExtension( "GL_ARB_fragment_program_shadow" ); ARB_fragment_shader = QueryExtension( "GL_ARB_fragment_shader" ); ARB_half_float_pixel = QueryExtension( "GL_ARB_half_float_pixel" ); ARB_imaging = QueryExtension( "GL_ARB_imaging" ); ARB_map_buffer_range = QueryExtension( "GL_ARB_map_buffer_range" ); ARB_matrix_palette = QueryExtension( "GL_ARB_matrix_palette" ); ARB_multisample = QueryExtension( "GL_ARB_multisample" ); ARB_multitexture = QueryExtension( "GL_ARB_multitexture" ); ARB_occlusion_query = QueryExtension( "GL_ARB_occlusion_query" ); ARB_pixel_buffer_object = QueryExtension( "GL_ARB_pixel_buffer_object" ); ARB_point_parameters = QueryExtension( "GL_ARB_point_parameters" ); ARB_point_sprite = QueryExtension( "GL_ARB_point_sprite" ); ARB_shader_objects = QueryExtension( "GL_ARB_shader_objects" ); ARB_shading_language_100 = QueryExtension( "GL_ARB_shading_language_100" ); ARB_shadow = QueryExtension( "GL_ARB_shadow" ); ARB_shadow_ambient = QueryExtension( "GL_ARB_shadow_ambient" ); ARB_texture_border_clamp = QueryExtension( "GL_ARB_texture_border_clamp" ); ARB_texture_compression = QueryExtension( "GL_ARB_texture_compression" ); ARB_texture_cube_map = QueryExtension( "GL_ARB_texture_cube_map" ); ARB_texture_env_add = QueryExtension( "GL_ARB_texture_env_add" ); ARB_texture_env_combine = QueryExtension( "GL_ARB_texture_env_combine" ); ARB_texture_env_crossbar = QueryExtension( "GL_ARB_texture_env_crossbar" ); ARB_texture_env_dot3 = QueryExtension( "GL_ARB_texture_env_dot3" ); ARB_texture_float = QueryExtension( "GL_ARB_texture_float" ); ARB_texture_mirrored_repeat = QueryExtension( "GL_ARB_texture_mirrored_repeat" ); ARB_texture_non_power_of_two = QueryExtension( "GL_ARB_texture_non_power_of_two" ); ARB_texture_rectangle = QueryExtension( "GL_ARB_texture_rectangle" ); ARB_transpose_matrix = QueryExtension( "GL_ARB_transpose_matrix" ); ARB_vertex_blend = QueryExtension( "GL_ARB_vertex_blend" ); ARB_vertex_buffer_object = QueryExtension( "GL_ARB_vertex_buffer_object" ); ARB_vertex_program = QueryExtension( "GL_ARB_vertex_program" ); ARB_vertex_shader = QueryExtension( "GL_ARB_vertex_shader" ); ARB_window_pos = QueryExtension( "GL_ARB_window_pos" ); ATI_draw_buffers = QueryExtension( "GL_ATI_draw_buffers" ); ATI_element_array = QueryExtension( "GL_ATI_element_array" ); ATI_envmap_bumpmap = QueryExtension( "GL_ATI_envmap_bumpmap" ); ATI_fragment_shader = QueryExtension( "GL_ATI_fragment_shader" ); ATI_map_buffer_object = QueryExtension( "GL_ATI_map_buffer_object" ); ATI_meminfo = QueryExtension( "GL_ATI_meminfo" ); ATI_separate_stencil = QueryExtension( "GL_ATI_separate_stencil" ); ATI_shader_texture_lod = QueryExtension( "GL_ATI_shader_texture_lod" ); ATI_texture_compression_3dc = QueryExtension( "GL_ATI_texture_compression_3dc" ); ATI_texture_env_combine3 = QueryExtension( "GL_ATI_texture_env_combine3" ); ATI_texture_float = QueryExtension( "GL_ATI_texture_float" ); ATI_texture_mirror_once = QueryExtension( "GL_ATI_texture_mirror_once" ); ATI_vertex_array_object = QueryExtension( "GL_ATI_vertex_array_object" ); ATI_vertex_attrib_array_object = QueryExtension( "GL_ATI_vertex_attrib_array_object" ); ATI_vertex_streams = QueryExtension( "GL_ATI_vertex_streams" ); EXT_abgr = QueryExtension( "GL_EXT_abgr" ); EXT_bgra = QueryExtension( "GL_EXT_bgra" ); EXT_bindable_uniform = QueryExtension( "GL_EXT_bindable_uniform" ); EXT_blend_color = QueryExtension( "GL_EXT_blend_color" ); EXT_blend_equation_separate = QueryExtension( "GL_EXT_blend_equation_separate" ); EXT_blend_func_separate = QueryExtension( "GL_EXT_blend_func_separate" ); EXT_blend_minmax = QueryExtension( "GL_EXT_blend_minmax" ); EXT_blend_subtract = QueryExtension( "GL_EXT_blend_subtract" ); EXT_Cg_shader = QueryExtension( "GL_EXT_Cg_shader" ); EXT_clip_volume_hint = QueryExtension( "GL_EXT_clip_volume_hint" ); EXT_compiled_vertex_array = QueryExtension( "GL_EXT_compiled_vertex_array" ); EXT_depth_bounds_test = QueryExtension( "GL_EXT_depth_bounds_test" ); EXT_draw_buffers = QueryExtension( "GL_EXT_draw_buffers" ); EXT_draw_buffers2 = QueryExtension( "GL_EXT_draw_buffers2" ); EXT_draw_instanced = QueryExtension( "GL_EXT_draw_instanced" ); EXT_draw_range_elements = QueryExtension( "GL_EXT_draw_range_elements" ); EXT_fog_coord = QueryExtension( "GL_EXT_fog_coord" ); EXT_framebuffer_blit = QueryExtension( "GL_EXT_framebuffer_blit" ); EXT_framebuffer_multisample = QueryExtension( "GL_EXT_framebuffer_multisample" ); EXT_framebuffer_object = QueryExtension( "GL_EXT_framebuffer_object" ); EXT_framebuffer_sRGB = QueryExtension( "GL_EXT_framebuffer_sRGB" ); EXT_geometry_shader4 = QueryExtension( "GL_EXT_geometry_shader4" ); EXT_gpu_shader4 = QueryExtension( "GL_EXT_gpu_shader4" ); EXT_multi_draw_arrays = QueryExtension( "GL_EXT_multi_draw_arrays" ); EXT_packed_depth_stencil = QueryExtension( "GL_EXT_packed_depth_stencil" ); EXT_packed_float = QueryExtension( "GL_EXT_packed_float" ); EXT_packed_pixels = QueryExtension( "GL_EXT_packed_pixels" ); EXT_paletted_texture = QueryExtension( "GL_EXT_paletted_texture" ); EXT_pixel_buffer_object = QueryExtension( "GL_EXT_pixel_buffer_object" ); EXT_point_parameters = QueryExtension( "GL_EXT_point_parameters" ); EXT_rescale_normal = QueryExtension( "GL_EXT_rescale_normal" ); EXT_secondary_color = QueryExtension( "GL_EXT_secondary_color" ); EXT_separate_specular_color = QueryExtension( "GL_EXT_separate_specular_color" ); EXT_shadow_funcs = QueryExtension( "GL_EXT_shadow_funcs" ); EXT_stencil_two_side = QueryExtension( "GL_EXT_stencil_two_side" ); EXT_stencil_wrap = QueryExtension( "GL_EXT_stencil_wrap" ); EXT_timer_query = QueryExtension( "GL_EXT_timer_query" ); EXT_texture_3D = QueryExtension( "GL_EXT_texture_3D" ); EXT_texture_array = QueryExtension( "GL_EXT_texture_array" ); EXT_texture_buffer_object = QueryExtension( "GL_EXT_texture_buffer_object" ); EXT_texture_compression_latc = QueryExtension( "GL_EXT_texture_compression_latc" ); EXT_texture_compression_rgtc = QueryExtension( "GL_EXT_texture_compression_rgtc" ); EXT_texture_compression_s3tc = QueryExtension( "GL_EXT_texture_compression_s3tc" ); EXT_texture_cube_map = QueryExtension( "GL_EXT_texture_cube_map" ); EXT_texture_edge_clamp = QueryExtension( "GL_EXT_texture_edge_clamp" ); EXT_texture_env_add = QueryExtension( "GL_EXT_texture_env_add" ); EXT_texture_env_combine = QueryExtension( "GL_EXT_texture_env_combine" ); EXT_texture_env_dot3 = QueryExtension( "GL_EXT_texture_env_dot3" ); EXT_texture_filter_anisotropic = QueryExtension( "GL_EXT_texture_filter_anisotropic" ); EXT_texture_integer = QueryExtension( "GL_EXT_texture_integer" ); EXT_texture_lod = QueryExtension( "GL_EXT_texture_lod" ); EXT_texture_lod_bias = QueryExtension( "GL_EXT_texture_lod_bias" ); EXT_texture_mirror_clamp = QueryExtension( "GL_EXT_texture_mirror_clamp" ); EXT_texture_object = QueryExtension( "GL_EXT_texture_object" ); EXT_texture_rectangle = QueryExtension( "GL_EXT_texture_rectangle" ); EXT_texture_shared_exponent = QueryExtension( "GL_EXT_texture_shared_exponent" ); EXT_transform_feedback = QueryExtension( "GL_EXT_transform_feedback" ); EXT_vertex_array = QueryExtension( "GL_EXT_vertex_array" ); EXT_vertex_shader = QueryExtension( "GL_EXT_vertex_shader" ); HP_occlusion_test = QueryExtension( "GL_HP_occlusion_test" ); IBM_rasterpos_clip = QueryExtension( "GL_IBM_rasterpos_clip" ); IBM_texture_mirrored_repeat = QueryExtension( "GL_IBM_texture_mirrored_repeat" ); KTX_buffer_region = QueryExtension( "GL_KTX_buffer_region" ); NV_blend_square = QueryExtension( "GL_NV_blend_square" ); NV_conditional_render = QueryExtension( "GL_NV_conditional_render" ); NV_copy_depth_to_color = QueryExtension( "GL_NV_copy_depth_to_color" ); NV_depth_buffer_float = QueryExtension( "GL_NV_depth_buffer_float" ); NV_depth_clamp = QueryExtension( "GL_NV_depth_clamp" ); NV_fence = QueryExtension( "GL_NV_fence" ); NV_float_buffer = QueryExtension( "GL_NV_float_buffer" ); NV_fog_distance = QueryExtension( "GL_NV_fog_distance" ); NV_fragment_program = QueryExtension( "GL_NV_fragment_program" ); NV_fragment_program2 = QueryExtension( "GL_NV_fragment_program2" ); NV_fragment_program_option = QueryExtension( "GL_NV_fragment_program_option" ); NV_framebuffer_multisample_coverage = QueryExtension( "GL_NV_framebuffer_multisample_coverage" ); NV_geometry_program4 = QueryExtension( "GL_NV_geometry_program4" ); NV_gpu_program4 = QueryExtension( "GL_NV_gpu_program4" ); NV_half_float = QueryExtension( "GL_NV_half_float" ); NV_light_max_exponent = QueryExtension( "GL_NV_light_max_exponent" ); NV_multisample_filter_hint = QueryExtension( "GL_NV_multisample_filter_hint" ); NV_occlusion_query = QueryExtension( "GL_NV_occlusion_query" ); NV_packed_depth_stencil = QueryExtension( "GL_NV_packed_depth_stencil" ); NV_parameter_buffer_object = QueryExtension( "GL_NV_parameter_buffer_object" ); NV_pixel_data_range = QueryExtension( "GL_NV_pixel_data_range" ); NV_point_sprite = QueryExtension( "GL_NV_point_sprite" ); NV_primitive_restart = QueryExtension( "GL_NV_primitive_restart" ); NV_register_combiners = QueryExtension( "GL_NV_register_combiners" ); NV_register_combiners2 = QueryExtension( "GL_NV_register_combiners2" ); NV_texgen_reflection = QueryExtension( "GL_NV_texgen_reflection" ); NV_texture_compression_vtc = QueryExtension( "GL_NV_texture_compression_vtc" ); NV_texture_env_combine4 = QueryExtension( "GL_NV_texture_env_combine4" ); NV_texture_expand_normal = QueryExtension( "GL_NV_texture_expand_normal" ); NV_texture_rectangle = QueryExtension( "GL_NV_texture_rectangle" ); NV_texture_shader = QueryExtension( "GL_NV_texture_shader" ); NV_texture_shader2 = QueryExtension( "GL_NV_texture_shader2" ); NV_texture_shader3 = QueryExtension( "GL_NV_texture_shader3" ); NV_transform_feedback = QueryExtension( "GL_NV_transform_feedback" ); NV_vertex_array_range = QueryExtension( "GL_NV_vertex_array_range" ); NV_vertex_array_range2 = QueryExtension( "GL_NV_vertex_array_range2" ); NV_vertex_program = QueryExtension( "GL_NV_vertex_program" ); NV_vertex_program1_1 = QueryExtension( "GL_NV_vertex_program1_1" ); NV_vertex_program2 = QueryExtension( "GL_NV_vertex_program2" ); NV_vertex_program2_option = QueryExtension( "GL_NV_vertex_program2_option" ); NV_vertex_program3 = QueryExtension( "GL_NV_vertex_program3" ); NV_vertex_program4 = QueryExtension( "GL_NV_vertex_program4" ); NVX_conditional_render = QueryExtension( "GL_NVX_conditional_render" ); S3_s3tc = QueryExtension( "GL_S3_s3tc" ); SGIS_generate_mipmap = QueryExtension( "GL_SGIS_generate_mipmap" ); SGIS_texture_lod = QueryExtension( "GL_SGIS_texture_lod" ); SGIX_depth_texture = QueryExtension( "GL_SGIX_depth_texture" ); SGIX_shadow = QueryExtension( "GL_SGIX_shadow" ); #ifdef _WIN32 WindowSystem = new CExtensionRegistryWGL(); #elif defined (__linux__) WindowSystem = new CExtensionRegistryGLX(); #endif // _WIN32 }