Blender  V3.3
wm_surface.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
7 #include "BKE_context.h"
8 
9 #include "BLF_api.h"
10 
11 #include "BLI_listbase.h"
12 #include "BLI_threads.h"
13 
14 #include "GHOST_C-api.h"
15 
16 #include "GPU_batch_presets.h"
17 #include "GPU_context.h"
18 #include "GPU_framebuffer.h"
19 #include "GPU_immediate.h"
20 
21 #include "MEM_guardedalloc.h"
22 
23 #include "WM_api.h"
24 #include "WM_types.h"
25 #include "wm.h"
26 
27 #include "wm_surface.h"
28 
31 
32 void wm_surfaces_iter(bContext *C, void (*cb)(bContext *C, wmSurface *))
33 {
34  /* Mutable iterator in case a surface is freed. */
36  cb(C, surf);
37  }
38 }
39 
41 {
42  if (surface->do_depsgraph) {
43  surface->do_depsgraph(C);
44  }
45 }
46 
48 {
50 }
51 
53 {
54  if (g_drawable) {
57 
58  if (g_drawable->deactivate) {
60  }
61 
62  g_drawable = NULL;
63  }
64 }
65 
67 {
69 
71  if (activate) {
72  if (surface->activate) {
73  surface->activate();
74  }
76  }
77 
79 }
80 
82 {
84 
85  if (surface != g_drawable) {
88  }
89 }
90 
92 {
95 
96  if (g_drawable) {
99  }
100 }
101 
103 {
105 }
106 
108 {
109  if (surface == g_drawable) {
111  }
113  surface->free_data(surface);
115 }
116 
118 {
120 
122  wm_surface_remove(surf);
123  }
124 
126 }
#define BLI_assert(a)
Definition: BLI_assert.h:46
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
Definition: BLI_listbase.h:269
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
Definition: BLI_listbase.h:354
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
Definition: listbase.c:80
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
Definition: listbase.c:100
int BLI_thread_is_main(void)
Definition: threads.cc:207
#define ELEM(...)
GHOST C-API function and type declarations.
void GPU_context_active_set(GPUContext *)
Definition: gpu_context.cc:127
GPUFrameBuffer * GPU_framebuffer_back_get(void)
GPUFrameBuffer * GPU_framebuffer_active_get(void)
Read Guarded memory(de)allocation.
#define C
Definition: RandGen.cpp:25
void activate(bool forceActivation=false) const
struct @211::@212 surface
void(* MEM_freeN)(void *vmemh)
Definition: mallocn.c:27
GHOST_ContextHandle ghost_ctx
Definition: wm_surface.h:22
void(* deactivate)(void)
Definition: wm_surface.h:36
void wm_surface_set_drawable(wmSurface *surface, bool activate)
Definition: wm_surface.c:66
void wm_surface_clear_drawable(void)
Definition: wm_surface.c:52
static ListBase global_surface_list
Definition: wm_surface.c:29
void wm_surface_reset_drawable(void)
Definition: wm_surface.c:91
void wm_surface_add(wmSurface *surface)
Definition: wm_surface.c:102
void wm_surface_remove(wmSurface *surface)
Definition: wm_surface.c:107
void wm_surfaces_do_depsgraph(bContext *C)
Definition: wm_surface.c:47
static void wm_surface_do_depsgraph_fn(bContext *C, wmSurface *surface)
Definition: wm_surface.c:40
static wmSurface * g_drawable
Definition: wm_surface.c:30
void wm_surface_make_drawable(wmSurface *surface)
Definition: wm_surface.c:81
void wm_surfaces_free(void)
Definition: wm_surface.c:117
void wm_surfaces_iter(bContext *C, void(*cb)(bContext *C, wmSurface *))
Definition: wm_surface.c:32
void WM_opengl_context_activate(void *context)
Definition: wm_window.c:2380
void WM_opengl_context_release(void *context)
Definition: wm_window.c:2386