[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25217] trunk/blender/source/blender: RNA:

Martin Poirier theeth at yahoo.com
Tue Dec 8 20:44:58 CET 2009


This commit broke ID selectors (scene, screen, ...)

The menu will open and everything, but clicking on a new item closes the menu and doesn't do anything else.

Reverting those changes (locally) fixed the problem, so it should probably be investigated.

Martin

--- On Tue, 12/8/09, Brecht Van Lommel <brecht at blender.org> wrote:

> From: Brecht Van Lommel <brecht at blender.org>
> Subject: [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25217] trunk/blender/source/blender: RNA:
> To: bf-blender-cvs at blender.org
> Received: Tuesday, December 8, 2009, 12:23 PM
> Revision: 25217
>           http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25217
> Author:   blendix
> Date:     2009-12-08 18:23:48 +0100
> (Tue, 08 Dec 2009)
> 
> Log Message:
> -----------
> RNA:
> 
> * Property update functions no longer get context, instead
> they get only
>   Main and Scene. The RNA api was intended to be as
> context-less as
>   possible, since it doesn't really matter who is
> changing the property,
>   everything that uses the property should be
> updated.
> * There's still one exception case that use it now, screen
> operations
>   still depend on context too much. It also revealed a
> few places using
>   context where they shouldn't.
> * Ideally Scene shouldn't be passed, but much of Blender
> still depends on
>   it, should be dropped when we try to support
> multiple scene editing.
> 
> Change was planned for a while, but need this now to be
> able to call
> update without a context pointer.
> 
> Modified Paths:
> --------------
>    
> trunk/blender/source/blender/editors/include/ED_screen.h
>    
> trunk/blender/source/blender/editors/screen/screen_edit.c
>    
> trunk/blender/source/blender/editors/screen/screen_ops.c
>    
> trunk/blender/source/blender/makesrna/RNA_access.h
>    
> trunk/blender/source/blender/makesrna/RNA_types.h
>    
> trunk/blender/source/blender/makesrna/intern/makesrna.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_access.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_armature.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_boid.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_brush.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_camera.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_cloth.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_constraint.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_curve.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_fcurve.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_fluidsim.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_group.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_image.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_internal.h
>    
> trunk/blender/source/blender/makesrna/intern/rna_internal_types.h
>    
> trunk/blender/source/blender/makesrna/intern/rna_key.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_lamp.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_lattice.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_main_api.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_material.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_mesh.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_meta.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_modifier.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_object.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_object_force.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_particle.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_pose.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_scene.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_scene_api.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_screen.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_sculpt_paint.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_sequence.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_smoke.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_sound.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_space.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_texture.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_ui.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_userdef.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_wm.c
>    
> trunk/blender/source/blender/makesrna/intern/rna_world.c
>    
> trunk/blender/source/blender/windowmanager/WM_api.h
>    
> trunk/blender/source/blender/windowmanager/intern/wm.c
>    
> trunk/blender/source/blender/windowmanager/intern/wm_files.c
> 
> Modified:
> trunk/blender/source/blender/editors/include/ED_screen.h
> ===================================================================
> ---
> trunk/blender/source/blender/editors/include/ED_screen.h   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/editors/include/ED_screen.h   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -98,7 +98,7 @@
>  void    ED_screen_set_subwinactive(struct
> wmWindow *win, struct wmEvent *event);
>  void    ED_screen_exit(struct bContext *C,
> struct wmWindow *window, struct bScreen *screen);
>  void    ED_screen_animation_timer(struct
> bContext *C, int redraws, int sync, int enable);
> -void   
> ED_screen_animation_timer_update(struct bContext *C, int
> redraws);
> +void   
> ED_screen_animation_timer_update(struct bScreen *screen, int
> redraws);
>  int       
> ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int
> type);
>  void    ED_screen_full_prevspace(struct
> bContext *C, ScrArea *sa);
>  void    ED_screen_full_restore(struct
> bContext *C, ScrArea *sa);
> 
> Modified:
> trunk/blender/source/blender/editors/screen/screen_edit.c
> ===================================================================
> ---
> trunk/blender/source/blender/editors/screen/screen_edit.c   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/editors/screen/screen_edit.c   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -1632,10 +1632,8 @@
>      return aret;
>  }
>  
> -void ED_screen_animation_timer_update(bContext *C, int
> redraws)
> +void ED_screen_animation_timer_update(bScreen *screen, int
> redraws)
>  {
> -    bScreen *screen= CTX_wm_screen(C);
> -    
>      if(screen &&
> screen->animtimer) {
>          wmTimer *wt=
> screen->animtimer;
>          ScreenAnimData *sad=
> wt->customdata;
> 
> Modified:
> trunk/blender/source/blender/editors/screen/screen_ops.c
> ===================================================================
> ---
> trunk/blender/source/blender/editors/screen/screen_ops.c   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/editors/screen/screen_ops.c   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -2418,7 +2418,7 @@
>             
> ED_screen_animation_timer(C, stime->redraws, sync,
> mode);
>              
>             
> /* update region if TIME_REGION was set, to leftmost 3d
> window */
> -           
> ED_screen_animation_timer_update(C, stime->redraws);
> +           
> ED_screen_animation_timer_update(screen,
> stime->redraws);
>          }
>          else {
>             
> int redraws = TIME_REGION|TIME_ALL_3D_WIN;
> 
> Modified:
> trunk/blender/source/blender/makesrna/RNA_access.h
> ===================================================================
> ---
> trunk/blender/source/blender/makesrna/RNA_access.h   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/makesrna/RNA_access.h   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -38,6 +38,7 @@
>  struct ID;
>  struct Main;
>  struct ReportList;
> +struct Scene;
>  
>  /* Types */
>  
> @@ -649,6 +650,7 @@
>  int RNA_property_animated(PointerRNA *ptr, PropertyRNA
> *prop);
>  
>  void RNA_property_update(struct bContext *C, PointerRNA
> *ptr, PropertyRNA *prop);
> +void RNA_property_update_main(struct Main *bmain, struct
> Scene *scene, PointerRNA *ptr, PropertyRNA *prop);
>  
>  /* Property Data */
>  
> 
> Modified:
> trunk/blender/source/blender/makesrna/RNA_types.h
> ===================================================================
> ---
> trunk/blender/source/blender/makesrna/RNA_types.h   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/makesrna/RNA_types.h   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -166,6 +166,9 @@
>      /* flag contains multiple enums */
>      PROP_ENUM_FLAG = 1<<21,
>  
> +    /* need context for update function */
> +    PROP_CONTEXT_UPDATE = 1<<22,
> +
>      /* internal flags */
>      PROP_BUILTIN = 1<<7,
>      PROP_EXPORT = 1<<8,
> 
> Modified:
> trunk/blender/source/blender/makesrna/intern/makesrna.c
> ===================================================================
> ---
> trunk/blender/source/blender/makesrna/intern/makesrna.c   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/makesrna/intern/makesrna.c   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -1763,7 +1763,7 @@
>      rna_print_c_string(f,
> prop->description); fprintf(f, ",\n\t");
>      fprintf(f, "%d,\n", prop->icon);
>      fprintf(f, "\t%s, %s|%s, %s, %d, {%d,
> %d, %d}, %d,\n", rna_property_typename(prop->type),
> rna_property_subtypename(prop->subtype),
> rna_property_subtype_unit(prop->subtype),
> rna_function_string(prop->getlength),
> prop->arraydimension, prop->arraylength[0],
> prop->arraylength[1], prop->arraylength[2],
> prop->totarraylength);
> -    fprintf(f, "\t%s, %d, %s, %s,\n",
> rna_function_string(prop->update), prop->noteflag,
> rna_function_string(prop->editable),
> rna_function_string(prop->itemeditable));
> +    fprintf(f, "\t%s%s, %d, %s, %s,\n",
> (prop->flag & PROP_CONTEXT_UPDATE)? "(UpdateFunc)":
> "", rna_function_string(prop->update), prop->noteflag,
> rna_function_string(prop->editable),
> rna_function_string(prop->itemeditable));
>  
>      if(prop->flag & PROP_RAW_ACCESS)
> rna_set_raw_offset(f, srna, prop);
>      else fprintf(f, "\t0, 0");
> @@ -2050,11 +2050,13 @@
>      fprintf(f, "#include
> <stddef.h>\n\n");
>  
>      fprintf(f, "#include \"DNA_ID.h\"\n");
> +    fprintf(f, "#include
> \"DNA_scene_types.h\"\n");
>  
>      fprintf(f, "#include
> \"BLI_blenlib.h\"\n\n");
>  
>      fprintf(f, "#include
> \"BKE_context.h\"\n");
>      fprintf(f, "#include
> \"BKE_library.h\"\n");
> +    fprintf(f, "#include
> \"BKE_main.h\"\n");
>      fprintf(f, "#include
> \"BKE_report.h\"\n");
>      fprintf(f, "#include
> \"BKE_utildefines.h\"\n\n");
>  
> 
> Modified:
> trunk/blender/source/blender/makesrna/intern/rna_access.c
> ===================================================================
> ---
> trunk/blender/source/blender/makesrna/intern/rna_access.c   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/makesrna/intern/rna_access.c   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -29,6 +29,7 @@
>  #include "MEM_guardedalloc.h"
>  
>  #include "DNA_ID.h"
> +#include "DNA_scene_types.h"
>  #include "DNA_windowmanager_types.h"
>  
>  #include "BLI_blenlib.h"
> @@ -37,6 +38,7 @@
>  
>  #include "BKE_context.h"
>  #include "BKE_idprop.h"
> +#include "BKE_main.h"
>  #include "BKE_report.h"
>  #include "BKE_utildefines.h"
>  
> @@ -1103,25 +1105,43 @@
>      return 0;
>  }
>  
> -void RNA_property_update(bContext *C, PointerRNA *ptr,
> PropertyRNA *prop)
> +static void rna_property_update(bContext *C, Main *bmain,
> Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
>  {
>      int is_rna = (prop->magic ==
> RNA_MAGIC);
>      prop= rna_ensure_property(prop);
>  
>      if(is_rna) {
> -        if(prop->update)
> -           
> prop->update(C, ptr);
> +        if(prop->update)
> {
> +           
> /* ideally no context would be needed for update, but
> there's some
> +           
>    parts of the code that need it still, so
> we have this exception */
> +           
> if(prop->flag & PROP_CONTEXT_UPDATE) {
> +           
>     if(C)
> ((ContextUpdateFunc)prop->update)(C, ptr);
> +           
> }
> +           
> else
> +           
>     prop->update(bmain, scene, ptr);
> +        }
>         
> if(prop->noteflag)
> -           
> WM_event_add_notifier(C, prop->noteflag,
> ptr->id.data);
> +           
> WM_main_add_notifier(prop->noteflag, ptr->id.data);
>      }
>      else {
>          /* WARNING! This is
> so property drivers update the display!
>           * not
> especially nice  */
>         
> DAG_id_flush_update(ptr->id.data, OB_RECALC_OB);
> -       
> WM_event_add_notifier(C, NC_WINDOW, NULL);
> +       
> WM_main_add_notifier(NC_WINDOW, NULL);
>      }
> +
>  }
>  
> +void RNA_property_update(bContext *C, PointerRNA *ptr,
> PropertyRNA *prop)
> +{
> +    rna_property_update(C,
> CTX_data_main(C), CTX_data_scene(C), ptr, prop);
> +}
> +
> +void RNA_property_update_main(Main *bmain, Scene *scene,
> PointerRNA *ptr, PropertyRNA *prop)
> +{
> +    rna_property_update(NULL, bmain, scene,
> ptr, prop);
> +}
> +
>  /* Property Data */
>  
>  int RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA
> *prop)
> 
> Modified:
> trunk/blender/source/blender/makesrna/intern/rna_armature.c
> ===================================================================
> ---
> trunk/blender/source/blender/makesrna/intern/rna_armature.c   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/makesrna/intern/rna_armature.c   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -47,13 +47,13 @@
>  
>  #include "ED_armature.h"
>  
> -static void rna_Armature_update_data(bContext *C,
> PointerRNA *ptr)
> +static void rna_Armature_update_data(Main *bmain, Scene
> *scene, PointerRNA *ptr)
>  {
>      ID *id= ptr->id.data;
>  
>      DAG_id_flush_update(id,
> OB_RECALC_DATA);
> -    WM_event_add_notifier(C,
> NC_GEOM|ND_DATA, id);
> -    //WM_event_add_notifier(C,
> NC_OBJECT|ND_POSE, NULL);
> +    WM_main_add_notifier(NC_GEOM|ND_DATA,
> id);
> +   
> //WM_main_add_notifier(NC_OBJECT|ND_POSE, NULL);
>  }
>  
>  
> @@ -103,11 +103,11 @@
>      ED_armature_edit_bone_remove(arm,
> ebone);
>  }
>  
> -static void rna_Armature_redraw_data(bContext *C,
> PointerRNA *ptr)
> +static void rna_Armature_redraw_data(Main *bmain, Scene
> *scene, PointerRNA *ptr)
>  {
>      ID *id= ptr->id.data;
>  
> -    WM_event_add_notifier(C,
> NC_GEOM|ND_DATA, id);
> +    WM_main_add_notifier(NC_GEOM|ND_DATA,
> id);
>  }
>  
>  static char *rna_Bone_path(PointerRNA *ptr)
> @@ -304,7 +304,7 @@
>      }
>  }
>  
> -static void
> rna_Armature_editbone_transform_update(bContext *C,
> PointerRNA *ptr)
> +static void rna_Armature_editbone_transform_update(Main
> *bmain, Scene *scene, PointerRNA *ptr)
>  {
>      bArmature *arm=
> (bArmature*)ptr->id.data;
>      EditBone *ebone=
> (EditBone*)ptr->data;
> @@ -339,7 +339,7 @@
>          }
>      }
>  
> -    rna_Armature_update_data(C, ptr);
> +    rna_Armature_update_data(bmain, scene,
> ptr);
>  }
>  
>  static void
> rna_Armature_bones_next(CollectionPropertyIterator *iter)
> 
> Modified:
> trunk/blender/source/blender/makesrna/intern/rna_boid.c
> ===================================================================
> ---
> trunk/blender/source/blender/makesrna/intern/rna_boid.c   
> 2009-12-08 17:00:53 UTC (rev 25216)
> +++
> trunk/blender/source/blender/makesrna/intern/rna_boid.c   
> 2009-12-08 17:23:48 UTC (rev 25217)
> @@ -72,7 +72,7 @@
>  #include "BKE_depsgraph.h"
>  #include "BKE_particle.h"
>  
> -static void rna_Boids_reset(bContext *C, PointerRNA *ptr)
> +static void rna_Boids_reset(Main *bmain, Scene *scene,
> PointerRNA *ptr)
>  {
>     
> if(ptr->type==&RNA_ParticleSystem) {
>          ParticleSystem *psys
> = (ParticleSystem*)ptr->data;
> @@ -84,12 +84,10 @@
>      else
>         
> DAG_id_flush_update(ptr->id.data,
> OB_RECALC_DATA|PSYS_RECALC_RESET);
>  
> -    WM_event_add_notifier(C,
> NC_OBJECT|ND_PARTICLE_DATA, NULL);
> +   
> WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL);
>  }
> -static void rna_Boids_reset_deps(bContext *C, PointerRNA
> *ptr)
> +static void rna_Boids_reset_deps(Main *bmain, Scene
> *scene, PointerRNA *ptr)
>  {
> -    Scene *scene = CTX_data_scene(C);
> -
>     
> if(ptr->type==&RNA_ParticleSystem) {
>          ParticleSystem *psys
> = (ParticleSystem*)ptr->data;
>          
> @@ -102,7 +100,7 @@
>  
>      DAG_scene_sort(scene);
>  
> -    WM_event_add_notifier(C,
> NC_OBJECT|ND_PARTICLE_DATA, NULL);
> +   
> WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL);
>  }
>  
>  static StructRNA* rna_BoidRule_refine(struct PointerRNA
> *ptr)
> 

> 
> @@ Diff output truncated at 10240 characters. @@
> 
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
> 


      __________________________________________________________________
Connect with friends from any web browser - no download required. Try the new Yahoo! Canada Messenger for the Web BETA at http://ca.messenger.yahoo.com/webmessengerpromo.php


More information about the Bf-committers mailing list