WM: test with context-less add notifier. Notifiers are one
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Wed, 7 Oct 2009 21:39:24 +0000 (21:39 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Wed, 7 Oct 2009 21:39:24 +0000 (21:39 +0000)
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.

source/blender/windowmanager/WM_api.h
source/blender/windowmanager/intern/wm_event_system.c

index e7f5bb3b2917d75c23aa73d9876ffa89c9439ed1..0054f151803671282b3566e78b8100caa9eb7f2b 100644 (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 */
 
index 086fdd3665bed614ad8b3357772c2aa0277e5ca5..4a8aac4525d2333a14959f72c27eeb2158bf9ea7 100644 (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;