Lines Matching refs:ac

101 is_context_valid(struct apple_glx_context *ac)
108 if (ac == i) {
130 struct apple_glx_context *ac;
136 ac = malloc(sizeof *ac);
138 if (NULL == ac) {
147 free(ac);
151 ac->context_obj = NULL;
152 ac->pixel_format_obj = NULL;
153 ac->drawable = NULL;
154 ac->thread_id = pthread_self();
155 ac->screen = screen;
156 ac->double_buffered = false;
157 ac->uses_stereo = false;
158 ac->need_update = false;
159 ac->is_current = false;
160 ac->made_current = false;
161 ac->last_surface_window = None;
163 apple_visual_create_pfobj(&ac->pixel_format_obj, mode,
164 &ac->double_buffered, &ac->uses_stereo,
167 error = apple_cgl.create_context(ac->pixel_format_obj,
169 &ac->context_obj);
173 (void) apple_cgl.destroy_pixel_format(ac->pixel_format_obj);
175 free(ac);
195 context_list->previous = ac;
197 ac->previous = NULL;
198 ac->next = context_list;
199 context_list = ac;
201 *ptr = ac;
203 apple_glx_diagnostic("%s: ac %p ac->context_obj %p\n",
204 __func__, (void *) ac, (void *) ac->context_obj);
214 struct apple_glx_context *ac = *ptr;
216 if (NULL == ac)
219 apple_glx_diagnostic("%s: ac %p ac->context_obj %p\n",
220 __func__, (void *) ac, (void *) ac->context_obj);
222 if (apple_cgl.get_current_context() == ac->context_obj) {
223 apple_glx_diagnostic("%s: context ac->context_obj %p "
225 (void *) ac->context_obj);
231 /* Remove ac from the context_list as soon as possible. */
234 if (ac->previous) {
235 ac->previous->next = ac->next;
238 context_list = ac->next;
241 if (ac->next) {
242 ac->next->previous = ac->previous;
248 if (apple_cgl.clear_drawable(ac->context_obj)) {
258 * removed the ac pointer from the double-linked list.
260 if (ac->drawable) {
261 ac->drawable->destroy(ac->drawable);
264 if (apple_cgl.destroy_pixel_format(ac->pixel_format_obj)) {
269 if (apple_cgl.destroy_context(ac->context_obj)) {
274 free(ac);
288 struct apple_glx_context *ac = ptr;
294 apple_glx_diagnostic("%s: oldac %p ac %p drawable 0x%lx\n",
295 __func__, (void *) oldac, (void *) ac, drawable);
297 apple_glx_diagnostic("%s: oldac->context_obj %p ac->context_obj %p\n",
300 (void *) (ac ? ac->context_obj : NULL));
304 if (ac && ac->drawable && ac->drawable->drawable == drawable) {
307 if (ac->is_current)
312 if (oldac && (ac != oldac))
315 if (NULL == ac) {
339 if (apple_cgl.set_current_context(ac->context_obj))
342 if (apple_cgl.clear_drawable(ac->context_obj))
345 if (ac->drawable) {
346 ac->drawable->destroy(ac->drawable);
347 ac->drawable = NULL;
351 ac->last_surface_window = None;
360 if (ac->drawable && ac->drawable->drawable == drawable) {
361 newagd = ac->drawable;
373 if (ac->drawable && !same_drawable) {
374 ac->drawable->destroy(ac->drawable);
375 ac->drawable = NULL;
379 if (apple_glx_surface_create(dpy, ac->screen, drawable, &newagd))
406 ac->drawable = newagd;
412 assert(ac->drawable == newagd);
416 ac->drawable = newagd;
425 if (same_drawable && ac->is_current) {
426 apple_glx_diagnostic("same_drawable and ac->is_current\n");
430 cglerr = apple_cgl.set_current_context(ac->context_obj);
438 ac->is_current = true;
440 assert(NULL != ac->context_obj);
441 assert(NULL != ac->drawable);
443 ac->thread_id = pthread_self();
446 ac->last_surface_window = None;
448 switch (ac->drawable->type) {
452 if (ac->drawable->callbacks.make_current) {
453 if (ac->drawable->callbacks.make_current(ac, ac->drawable))
460 ac->drawable->type);
470 struct apple_glx_context *ac = ptr;
472 if (ac->drawable && ac->drawable->drawable == drawable) {
475 else if (NULL == ac->drawable && None != ac->last_surface_window) {
476 apple_glx_context_update(dpy, ac);
478 return (ac->drawable && ac->drawable->drawable == drawable);
531 struct apple_glx_context *ac;
536 for (ac = context_list; ac; ac = ac->next) {
537 if (ac->drawable && APPLE_GLX_DRAWABLE_SURFACE == ac->drawable->type
538 && ac->drawable->types.surface.uid == uid) {
540 if (caller == ac->thread_id) {
544 xp_update_gl_context(ac->context_obj);
547 ac->need_update = true;
561 struct apple_glx_context *ac = ptr;
563 if (NULL == ac->drawable && None != ac->last_surface_window) {
568 apple_glx_make_current_context(dpy, ac, ac, ac->last_surface_window);
574 if (ac->need_update) {
575 xp_update_gl_context(ac->context_obj);
576 ac->need_update = false;
581 if (ac->drawable && APPLE_GLX_DRAWABLE_SURFACE == ac->drawable->type
582 && ac->drawable->types.surface.pending_destroy) {
584 apple_cgl.clear_drawable(ac->context_obj);
586 if (ac->drawable) {
591 apple_glx_diagnostic("%s: ac->drawable->drawable is 0x%lx\n",
592 __func__, ac->drawable->drawable);
594 d = ac->drawable;
596 ac->last_surface_window = d->drawable;
598 ac->drawable = NULL;
615 struct apple_glx_context *ac = ptr;
617 return ac->uses_stereo;