This is the parent task for the COW Operator porting taskforce.
## How this works:
1) Find an operator you want to port in the linked sub-tasks below
2) Leave a comment stating what operator(s) you're working on
3) Submit patches for review - tagging @sergey and @aligorith as reviewers
## Sub-tasks for each module's operators:
#### Stuff you can do now:
**Major Changes Required:**
- Armature Edit Mode
- Pose Tools
- Movie Clip Editor
- Image Editor
- UV Editor
**Likely Only Minor Changes Needed:**
- Interface + Screen + Workspace + Scene + Script
- Node Editor
#### Postponed (Blocking/Pending Issues need resolving first)
** Waiting for Sergey to test/check first **
- Curve/Surface (`CURVE_OT_*`)
- Font (`FONT_OT_*`)
- Metaballs (`META_OT_*`)
- Lattices (`LATTICE_OT_*`)
** Waiting for Grease Pencil branch merge **
- Grease Pencil module (`editors/gpencil`)
#### Should be fine now
- Text Editor
## What to do:
Code work is tedious but rather straightforward. Here are some knowledge which will help migrating operators:
Use D3036, D3158, and D3159 as an examples.
To go from original object to evaluated, use DEG_get_evaluated_object().
To go from original ID to evaluated use DEG_get_evaluated_id().
Keep in mind, these functions do hash lookup based on ID, so if multiple lookups of same object is needed try to store result of this lookup.
To go from evaluated to original object use DEG_get_original_object().
To go from evaluated to original ID use DEG_get_original_id().
These functions are cheap.
If some operator changes interface-only data (example: scene’s 3d cursor location) apart form notifier also use DEG_id_tag_update(id, DEG_TAG_COPY_ON_WRITE).
Example commit: 6a75a1a669d