利用者:Koilz/2.50.a2 bex WM main
Blender Execution - 2.5A2 30518M
Execution
The main entrypoint is in (blender\source\creator\creator.c)
The main program loop is in (blender\source\blender\windowmanager\intern\wm.c)
// 0999 blender\source\creator\creator.c
// --------------------------------------------------------------------------------
int main(int argc, char **argv) /* Entrypoint */
{
SYS_SystemHandle syshandle;
bContext *C= CTX_create();
bArgs *ba;
// --------------------------------------------------------------------------------
// 1147 blender\source\creator\creator.c
// --------------------------------------------------------------------------------
WM_main(C); /* Main program loop */
// --------------------------------------------------------------------------------
// 0058 blender\source\blender\windowmanager\WM_api.h
// --------------------------------------------------------------------------------
void WM_main (struct bContext *C); /* WM_main declarartion */
// --------------------------------------------------------------------------------
// 0328 blender\source\blender\windowmanager\intern\wm.c
// --------------------------------------------------------------------------------
void WM_main(bContext *C) /* WM_main definition */
{
while(1)
{
/* get events from ghost, handle window events, add to window queues */
wm_window_process_events(C);
/* per window, all events to the window, screen, area and region handlers */
wm_event_do_handlers(C);
/* events have left notes about changes, we handle and cache it */
wm_event_do_notifiers(C);
/* execute cached changes draw */
wm_draw_update(C);
}
}
// --------------------------------------------------------------------------------
Context
..
// 0054 blender\source\blender\blenkernel\intern\context.c
// --------------------------------------------------------------------------------
struct bContext
{
int thread;
/* windowmanager context */
struct
{
struct wmWindowManager *manager;
struct wmWindow *window;
struct bScreen *screen;
struct ScrArea *area;
struct ARegion *region;
struct ARegion *menu;
struct bContextStore *store;
} wm;
/* data context */
struct
{
struct Main *main;
struct Scene *scene;
int recursion;
int py_init; /* true if python is initialized */
void *py_context;
} data;
/* data evaluation */
struct
{
int render;
} eval;
};
// --------------------------------------------------------------------------------