WM: test with context-less add notifier. Notifiers are one

of the main reasons for passing along context, while actually
they don't need much context at all. Might be removed again,
but would like to have this especially for RNA API functions.
This commit is contained in:
2009-10-07 21:39:24 +00:00
parent 0c857a4f14
commit 1b7e5b9abe
2 changed files with 23 additions and 1 deletions

View File

@@ -126,7 +126,8 @@ void WM_event_remove_handlers(struct bContext *C, ListBase *handlers);
void WM_event_add_mousemove(struct bContext *C);
int WM_modal_tweak_exit(struct wmEvent *evt, int tweak_event);
void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *data);
void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *reference);
void WM_main_add_notifier(unsigned int type, void *reference);
void wm_event_add (struct wmWindow *win, struct wmEvent *event_to_add); /* XXX only for warning */

View File

@@ -45,6 +45,7 @@
#include "BKE_context.h"
#include "BKE_idprop.h"
#include "BKE_global.h"
#include "BKE_main.h"
#include "BKE_object.h"
#include "BKE_report.h"
#include "BKE_scene.h"
@@ -118,6 +119,26 @@ void WM_event_add_notifier(const bContext *C, unsigned int type, void *reference
note->reference= reference;
}
void WM_main_add_notifier(unsigned int type, void *reference)
{
Main *bmain= G.main;
wmWindowManager *wm= bmain->wm.first;
if(wm) {
wmNotifier *note= MEM_callocN(sizeof(wmNotifier), "notifier");
note->wm= wm;
BLI_addtail(&note->wm->queue, note);
note->category= type & NOTE_CATEGORY;
note->data= type & NOTE_DATA;
note->subtype= type & NOTE_SUBTYPE;
note->action= type & NOTE_ACTION;
note->reference= reference;
}
}
static wmNotifier *wm_notifier_next(wmWindowManager *wm)
{
wmNotifier *note= wm->queue.first;