Merge branch 'master' into blender2.8
This commit is contained in:
@@ -163,7 +163,7 @@ class SpellChecker:
|
||||
"rolloff",
|
||||
"runtime",
|
||||
"scanline",
|
||||
"screencast", "screenshot", "screenshots",
|
||||
"screenshot", "screenshots",
|
||||
"seekability",
|
||||
"selfcollision",
|
||||
"shadowbuffer", "shadowbuffers",
|
||||
|
||||
@@ -88,7 +88,6 @@ kmi = km.keymap_items.new('screen.screen_full_area', 'UP_ARROW', 'PRESS', ctrl=T
|
||||
kmi = km.keymap_items.new('screen.screen_full_area', 'DOWN_ARROW', 'PRESS', ctrl=True)
|
||||
kmi = km.keymap_items.new('screen.screen_full_area', 'SPACE', 'PRESS', shift=True)
|
||||
kmi = km.keymap_items.new('screen.screenshot', 'F3', 'PRESS', ctrl=True)
|
||||
kmi = km.keymap_items.new('screen.screencast', 'F3', 'PRESS', alt=True)
|
||||
kmi = km.keymap_items.new('screen.region_quadview', 'W', 'PRESS', alt=True)
|
||||
kmi = km.keymap_items.new('screen.repeat_history', 'F3', 'PRESS', shift=True)
|
||||
kmi = km.keymap_items.new('screen.repeat_last', 'R', 'PRESS', shift=True)
|
||||
@@ -2433,4 +2432,3 @@ kmi = km.keymap_items.new_modal('SELECT', 'LEFTMOUSE', 'RELEASE', any=True)
|
||||
kmi = km.keymap_items.new_modal('SELECT', 'RIGHTMOUSE', 'RELEASE', any=True)
|
||||
kmi = km.keymap_items.new_modal('BEGIN', 'MIDDLEMOUSE', 'PRESS')
|
||||
kmi = km.keymap_items.new_modal('DESELECT', 'MIDDLEMOUSE', 'RELEASE')
|
||||
|
||||
|
||||
@@ -86,7 +86,6 @@ kmi = km.keymap_items.new('screen.screen_set', 'LEFT_ARROW', 'PRESS', ctrl=True)
|
||||
kmi.properties.delta = -1
|
||||
kmi = km.keymap_items.new('screen.screen_full_area', 'SPACE', 'PRESS', shift=True)
|
||||
kmi = km.keymap_items.new('screen.screenshot', 'F3', 'PRESS', ctrl=True)
|
||||
kmi = km.keymap_items.new('screen.screencast', 'F3', 'PRESS', alt=True)
|
||||
kmi = km.keymap_items.new('screen.region_quadview', 'SPACE', 'PRESS')
|
||||
kmi = km.keymap_items.new('screen.repeat_history', 'F3', 'PRESS')
|
||||
kmi = km.keymap_items.new('screen.repeat_last', 'G', 'PRESS')
|
||||
@@ -1916,4 +1915,3 @@ kmi.properties.action = 'TOGGLE'
|
||||
kmi = km.keymap_items.new('transform.translate', 'W', 'PRESS')
|
||||
kmi = km.keymap_items.new('transform.translate', 'EVT_TWEAK_S', 'ANY')
|
||||
kmi = km.keymap_items.new('transform.resize', 'R', 'PRESS')
|
||||
|
||||
|
||||
@@ -522,7 +522,6 @@ class INFO_MT_window(Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.screenshot")
|
||||
layout.operator("screen.screencast")
|
||||
|
||||
if sys.platform[:3] == "win":
|
||||
layout.separator()
|
||||
|
||||
@@ -505,12 +505,6 @@ class USERPREF_PT_system(Panel):
|
||||
|
||||
col.separator()
|
||||
|
||||
col.label(text="Screencast:")
|
||||
col.prop(system, "screencast_fps")
|
||||
col.prop(system, "screencast_wait_time")
|
||||
|
||||
col.separator()
|
||||
|
||||
if bpy.app.build_options.cycles:
|
||||
addon = userpref.addons.get("cycles")
|
||||
if addon is not None:
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include <Alembic/AbcGeom/All.h>
|
||||
#include <algorithm>
|
||||
#include <unordered_map>
|
||||
|
||||
extern "C" {
|
||||
#include "DNA_customdata_types.h"
|
||||
@@ -51,6 +52,27 @@ using Alembic::Abc::V2fArraySample;
|
||||
using Alembic::AbcGeom::OV2fGeomParam;
|
||||
using Alembic::AbcGeom::OC4fGeomParam;
|
||||
|
||||
|
||||
static inline uint64_t uv_to_hash_key(Imath::V2f v)
|
||||
{
|
||||
/* Convert -0.0f to 0.0f, so bitwise comparison works. */
|
||||
if (v.x == 0.0f) {
|
||||
v.x = 0.0f;
|
||||
}
|
||||
if (v.y == 0.0f) {
|
||||
v.y = 0.0f;
|
||||
}
|
||||
|
||||
/* Pack floats in 64bit. */
|
||||
union {
|
||||
float xy[2];
|
||||
uint64_t key;
|
||||
} tmp;
|
||||
tmp.xy[0] = v.x;
|
||||
tmp.xy[1] = v.y;
|
||||
return tmp.key;
|
||||
}
|
||||
|
||||
static void get_uvs(const CDStreamConfig &config,
|
||||
std::vector<Imath::V2f> &uvs,
|
||||
std::vector<uint32_t> &uvidx,
|
||||
@@ -84,6 +106,9 @@ static void get_uvs(const CDStreamConfig &config,
|
||||
}
|
||||
}
|
||||
else {
|
||||
std::unordered_map<uint64_t, int> idx_map;
|
||||
int idx_count = 0;
|
||||
|
||||
for (int i = 0; i < num_poly; ++i) {
|
||||
MPoly ¤t_poly = polygons[i];
|
||||
MLoopUV *loopuvpoly = mloopuv_array + current_poly.loopstart + current_poly.totloop;
|
||||
@@ -91,15 +116,15 @@ static void get_uvs(const CDStreamConfig &config,
|
||||
for (int j = 0; j < current_poly.totloop; ++j) {
|
||||
loopuvpoly--;
|
||||
Imath::V2f uv(loopuvpoly->uv[0], loopuvpoly->uv[1]);
|
||||
|
||||
std::vector<Imath::V2f>::iterator it = std::find(uvs.begin(), uvs.end(), uv);
|
||||
|
||||
if (it == uvs.end()) {
|
||||
uvidx.push_back(uvs.size());
|
||||
uint64_t k = uv_to_hash_key(uv);
|
||||
std::unordered_map<uint64_t, int>::iterator it = idx_map.find(k);
|
||||
if (it == idx_map.end()) {
|
||||
idx_map[k] = idx_count;
|
||||
uvs.push_back(uv);
|
||||
uvidx.push_back(idx_count++);
|
||||
}
|
||||
else {
|
||||
uvidx.push_back(std::distance(uvs.begin(), it));
|
||||
uvidx.push_back(it->second);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4222,9 +4222,6 @@ void uiTemplateRunningJobs(uiLayout *layout, bContext *C)
|
||||
NULL, 0.0f, 0.0f, 0, 0, TIP_("Stop this job"));
|
||||
}
|
||||
|
||||
if (WM_jobs_test(wm, screen, WM_JOB_TYPE_SCREENCAST))
|
||||
uiDefIconTextBut(block, UI_BTYPE_BUT, B_STOPCAST, ICON_CANCEL, IFACE_("Capture"), 0, 0, UI_UNIT_X * 4.25f, UI_UNIT_Y,
|
||||
NULL, 0.0f, 0.0f, 0, 0, TIP_("Stop screencast"));
|
||||
if (screen->animtimer)
|
||||
uiDefIconTextBut(block, UI_BTYPE_BUT, B_STOPANIM, ICON_CANCEL, IFACE_("Anim Player"), 0, 0, UI_UNIT_X * 5.0f, UI_UNIT_Y,
|
||||
NULL, 0.0f, 0.0f, 0, 0, TIP_("Stop animation playback"));
|
||||
|
||||
@@ -1513,10 +1513,6 @@ void init_userdef_do_versions(Main *bmain)
|
||||
if (U.dbl_click_time == 0) {
|
||||
U.dbl_click_time = 350;
|
||||
}
|
||||
if (U.scrcastfps == 0) {
|
||||
U.scrcastfps = 10;
|
||||
U.scrcastwait = 50;
|
||||
}
|
||||
if (U.v2d_min_gridsize == 0) {
|
||||
U.v2d_min_gridsize = 35;
|
||||
}
|
||||
|
||||
@@ -78,7 +78,6 @@ extern const char *screen_context_dir[]; /* doc access */
|
||||
|
||||
/* screendump.c */
|
||||
void SCREEN_OT_screenshot(struct wmOperatorType *ot);
|
||||
void SCREEN_OT_screencast(struct wmOperatorType *ot);
|
||||
|
||||
/* screen_ops.c */
|
||||
void region_blend_start(struct bContext *C, struct ScrArea *sa, struct ARegion *ar);
|
||||
|
||||
@@ -4687,7 +4687,6 @@ void ED_operatortypes_screen(void)
|
||||
WM_operatortype_append(SCREEN_OT_back_to_previous);
|
||||
WM_operatortype_append(SCREEN_OT_spacedata_cleanup);
|
||||
WM_operatortype_append(SCREEN_OT_screenshot);
|
||||
WM_operatortype_append(SCREEN_OT_screencast);
|
||||
WM_operatortype_append(SCREEN_OT_userpref_show);
|
||||
WM_operatortype_append(SCREEN_OT_drivers_editor_show);
|
||||
WM_operatortype_append(SCREEN_OT_region_blend);
|
||||
@@ -4817,7 +4816,6 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
|
||||
RNA_boolean_set(kmi->ptr, "use_hide_panels", true);
|
||||
|
||||
WM_keymap_add_item(keymap, "SCREEN_OT_screenshot", F3KEY, KM_PRESS, KM_CTRL, 0);
|
||||
WM_keymap_add_item(keymap, "SCREEN_OT_screencast", F3KEY, KM_PRESS, KM_ALT, 0);
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "SCREEN_OT_space_context_cycle", TABKEY, KM_PRESS, KM_CTRL, 0);
|
||||
RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_NEXT);
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_utildefines.h"
|
||||
#include "BLI_math.h"
|
||||
|
||||
#include "IMB_imbuf_types.h"
|
||||
#include "IMB_imbuf.h"
|
||||
@@ -44,21 +43,15 @@
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_screen_types.h"
|
||||
#include "DNA_space_types.h"
|
||||
#include "DNA_userdef_types.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_image.h"
|
||||
#include "BKE_report.h"
|
||||
#include "BKE_writeavi.h"
|
||||
|
||||
#include "BIF_gl.h"
|
||||
|
||||
#include "GPU_immediate.h"
|
||||
#include "GPU_immediate_util.h"
|
||||
#include "GPU_state.h"
|
||||
|
||||
#include "RNA_access.h"
|
||||
#include "RNA_define.h"
|
||||
|
||||
@@ -67,9 +60,6 @@
|
||||
#include "WM_types.h"
|
||||
#include "WM_api.h"
|
||||
|
||||
#include "PIL_time.h"
|
||||
|
||||
|
||||
#include "screen_intern.h"
|
||||
|
||||
typedef struct ScreenshotData {
|
||||
@@ -309,257 +299,3 @@ void SCREEN_OT_screenshot(wmOperatorType *ot)
|
||||
"Capture the whole window (otherwise only capture the active area)");
|
||||
}
|
||||
|
||||
/* *************** screenshot movie job ************************* */
|
||||
|
||||
typedef struct ScreenshotJob {
|
||||
Main *bmain;
|
||||
Scene *scene;
|
||||
wmWindowManager *wm;
|
||||
unsigned int *dumprect;
|
||||
int x, y, dumpsx, dumpsy;
|
||||
const short *stop;
|
||||
const short *do_update;
|
||||
ReportList reports;
|
||||
|
||||
bMovieHandle *movie_handle;
|
||||
void *movie_ctx;
|
||||
} ScreenshotJob;
|
||||
|
||||
|
||||
static void screenshot_freejob(void *sjv)
|
||||
{
|
||||
ScreenshotJob *sj = sjv;
|
||||
|
||||
if (sj->dumprect)
|
||||
MEM_freeN(sj->dumprect);
|
||||
|
||||
if (sj->movie_handle) {
|
||||
bMovieHandle *mh = sj->movie_handle;
|
||||
mh->end_movie(sj->movie_ctx);
|
||||
mh->context_free(sj->movie_ctx);
|
||||
}
|
||||
|
||||
MEM_freeN(sj);
|
||||
}
|
||||
|
||||
|
||||
/* called before redraw notifiers, copies a new dumprect */
|
||||
static void screenshot_updatejob(void *sjv)
|
||||
{
|
||||
ScreenshotJob *sj = sjv;
|
||||
unsigned int *dumprect;
|
||||
|
||||
if (sj->dumprect == NULL) {
|
||||
dumprect = MEM_mallocN(sizeof(int) * sj->dumpsx * sj->dumpsy, "dumprect");
|
||||
screenshot_read_pixels(sj->x, sj->y, sj->dumpsx, sj->dumpsy, (unsigned char *)dumprect);
|
||||
|
||||
sj->dumprect = dumprect;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* only this runs inside thread */
|
||||
static void screenshot_startjob(void *sjv, short *stop, short *do_update, float *UNUSED(progress))
|
||||
{
|
||||
ScreenshotJob *sj = sjv;
|
||||
RenderData rd = sj->scene->r;
|
||||
bMovieHandle *mh = NULL;
|
||||
|
||||
/* we need this as local variables for renderdata */
|
||||
rd.frs_sec = U.scrcastfps;
|
||||
rd.frs_sec_base = 1.0f;
|
||||
|
||||
if (BKE_imtype_is_movie(rd.im_format.imtype)) {
|
||||
mh = BKE_movie_handle_get(sj->scene->r.im_format.imtype);
|
||||
if (mh == NULL) {
|
||||
printf("Movie format unsupported\n");
|
||||
return;
|
||||
}
|
||||
sj->movie_ctx = mh->context_create();
|
||||
sj->movie_handle = mh;
|
||||
|
||||
if (!mh->start_movie(sj->movie_ctx, sj->scene, &rd, sj->dumpsx, sj->dumpsy, &sj->reports, false, "")) {
|
||||
printf("screencast job stopped\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
sj->stop = stop;
|
||||
sj->do_update = do_update;
|
||||
|
||||
*do_update = true; /* wait for opengl rect */
|
||||
|
||||
while (*stop == 0) {
|
||||
|
||||
if (sj->dumprect) {
|
||||
|
||||
if (mh) {
|
||||
if (mh->append_movie(sj->movie_ctx, &rd, rd.sfra, rd.cfra, (int *)sj->dumprect,
|
||||
sj->dumpsx, sj->dumpsy, "", &sj->reports))
|
||||
{
|
||||
BKE_reportf(&sj->reports, RPT_INFO, "Appended frame: %d", rd.cfra);
|
||||
printf("Appended frame %d\n", rd.cfra);
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
ImBuf *ibuf = IMB_allocImBuf(sj->dumpsx, sj->dumpsy, rd.im_format.planes, 0);
|
||||
char name[FILE_MAX];
|
||||
int ok;
|
||||
|
||||
BKE_image_path_from_imformat(
|
||||
name, rd.pic, BKE_main_blendfile_path(sj->bmain), rd.cfra,
|
||||
&rd.im_format, (rd.scemode & R_EXTENSION) != 0, true, NULL);
|
||||
|
||||
ibuf->rect = sj->dumprect;
|
||||
ok = BKE_imbuf_write(ibuf, name, &rd.im_format);
|
||||
|
||||
if (ok == 0) {
|
||||
printf("Write error: cannot save %s\n", name);
|
||||
BKE_reportf(&sj->reports, RPT_INFO, "Write error: cannot save %s", name);
|
||||
break;
|
||||
}
|
||||
else {
|
||||
printf("Saved file: %s\n", name);
|
||||
BKE_reportf(&sj->reports, RPT_INFO, "Saved file: %s", name);
|
||||
}
|
||||
|
||||
/* imbuf knows which rects are not part of ibuf */
|
||||
IMB_freeImBuf(ibuf);
|
||||
}
|
||||
|
||||
MEM_freeN(sj->dumprect);
|
||||
sj->dumprect = NULL;
|
||||
|
||||
*do_update = true;
|
||||
|
||||
rd.cfra++;
|
||||
|
||||
}
|
||||
else
|
||||
PIL_sleep_ms(U.scrcastwait);
|
||||
}
|
||||
|
||||
if (mh) {
|
||||
mh->end_movie(sj->movie_ctx);
|
||||
mh->context_free(sj->movie_ctx);
|
||||
sj->movie_handle = NULL;
|
||||
}
|
||||
|
||||
BKE_report(&sj->reports, RPT_INFO, "Screencast job stopped");
|
||||
}
|
||||
|
||||
/* Helper callback for drawing the cursor itself */
|
||||
static void screencast_draw_cursor(bContext *UNUSED(C), int x, int y, void *UNUSED(p_ptr))
|
||||
{
|
||||
GPU_line_smooth(true);
|
||||
GPU_blend(true);
|
||||
|
||||
Gwn_VertFormat *format = immVertexFormat();
|
||||
unsigned int pos = GWN_vertformat_attr_add(format, "pos", GWN_COMP_F32, 2, GWN_FETCH_FLOAT);
|
||||
|
||||
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
|
||||
|
||||
immUniformColor4ub(0, 0, 0, 32);
|
||||
imm_draw_circle_fill_2d(pos, (float)x, (float)y, 20, 40);
|
||||
|
||||
immUniformColor4ub(255, 255, 255, 128);
|
||||
imm_draw_circle_wire_2d(pos, (float)x, (float)y, 20, 40);
|
||||
|
||||
immUnbindProgram();
|
||||
|
||||
GPU_blend(false);
|
||||
GPU_line_smooth(false);
|
||||
}
|
||||
|
||||
/* Turn brush cursor in 3D view on/off */
|
||||
static void screencast_cursor_toggle(wmWindowManager *wm, short enable)
|
||||
{
|
||||
static void *cursor = NULL;
|
||||
|
||||
if (cursor && !enable) {
|
||||
/* clear cursor */
|
||||
WM_paint_cursor_end(wm, cursor);
|
||||
cursor = NULL;
|
||||
}
|
||||
else if (enable) {
|
||||
/* enable cursor */
|
||||
cursor = WM_paint_cursor_activate(wm, NULL, screencast_draw_cursor, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void screenshot_endjob(void *sjv)
|
||||
{
|
||||
ScreenshotJob *sj = sjv;
|
||||
|
||||
screencast_cursor_toggle(sj->wm, 0);
|
||||
}
|
||||
|
||||
|
||||
static int screencast_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
wmWindowManager *wm = CTX_wm_manager(C);
|
||||
wmWindow *win = CTX_wm_window(C);
|
||||
bScreen *screen = CTX_wm_screen(C);
|
||||
wmJob *wm_job;
|
||||
ScreenshotJob *sj;
|
||||
|
||||
/* if called again, stop the running job */
|
||||
if (WM_jobs_test(wm, screen, WM_JOB_TYPE_SCREENCAST))
|
||||
WM_jobs_stop(wm, screen, screenshot_startjob);
|
||||
|
||||
wm_job = WM_jobs_get(wm, win, screen, "Screencast", 0, WM_JOB_TYPE_SCREENCAST);
|
||||
sj = MEM_callocN(sizeof(ScreenshotJob), "screenshot job");
|
||||
|
||||
/* setup sj */
|
||||
if (RNA_boolean_get(op->ptr, "full")) {
|
||||
sj->x = 0;
|
||||
sj->y = 0;
|
||||
sj->dumpsx = WM_window_pixels_x(win);
|
||||
sj->dumpsy = WM_window_pixels_y(win);
|
||||
}
|
||||
else {
|
||||
ScrArea *curarea = CTX_wm_area(C);
|
||||
sj->x = curarea->totrct.xmin;
|
||||
sj->y = curarea->totrct.ymin;
|
||||
sj->dumpsx = curarea->totrct.xmax - sj->x;
|
||||
sj->dumpsy = curarea->totrct.ymax - sj->y;
|
||||
}
|
||||
sj->bmain = CTX_data_main(C);
|
||||
sj->scene = CTX_data_scene(C);
|
||||
sj->wm = wm;
|
||||
|
||||
BKE_reports_init(&sj->reports, RPT_PRINT);
|
||||
|
||||
/* setup job */
|
||||
WM_jobs_customdata_set(wm_job, sj, screenshot_freejob);
|
||||
WM_jobs_timer(wm_job, 0.1, 0, NC_SCREEN | ND_SCREENCAST);
|
||||
WM_jobs_callbacks(wm_job, screenshot_startjob, NULL, screenshot_updatejob, screenshot_endjob);
|
||||
|
||||
WM_jobs_start(sj->wm, wm_job);
|
||||
|
||||
screencast_cursor_toggle(sj->wm, 1);
|
||||
|
||||
WM_event_add_notifier(C, NC_SCREEN | ND_SCREENCAST, screen);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void SCREEN_OT_screencast(wmOperatorType *ot)
|
||||
{
|
||||
ot->name = "Make Screencast";
|
||||
ot->idname = "SCREEN_OT_screencast";
|
||||
ot->description = "Capture a video of the active area or whole Blender window";
|
||||
|
||||
ot->invoke = WM_operator_confirm;
|
||||
ot->exec = screencast_exec;
|
||||
ot->poll = screenshot_poll; /* shared poll */
|
||||
|
||||
ot->flag = 0;
|
||||
|
||||
RNA_def_property(ot->srna, "filepath", PROP_STRING, PROP_FILEPATH);
|
||||
RNA_def_boolean(ot->srna, "full", 1, "Full Screen",
|
||||
"Capture the whole window (otherwise only capture the active area)");
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ static void info_header_listener(
|
||||
/* context changes */
|
||||
switch (wmn->category) {
|
||||
case NC_SCREEN:
|
||||
if (ELEM(wmn->data, ND_LAYER, ND_SCREENCAST, ND_ANIMPLAY)) {
|
||||
if (ELEM(wmn->data, ND_LAYER, ND_ANIMPLAY)) {
|
||||
ED_region_tag_redraw(ar);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -772,7 +772,6 @@ static void node_region_listener(
|
||||
WM_manipulatormap_tag_refresh(mmap);
|
||||
}
|
||||
switch (wmn->data) {
|
||||
case ND_SCREENCAST:
|
||||
case ND_ANIMPLAY:
|
||||
case ND_LAYER:
|
||||
ED_region_tag_redraw(ar);
|
||||
|
||||
@@ -529,7 +529,7 @@ static void sequencer_main_region_listener(
|
||||
ED_region_tag_redraw(ar);
|
||||
break;
|
||||
case NC_SCREEN:
|
||||
if (ELEM(wmn->data, ND_SCREENCAST, ND_ANIMPLAY))
|
||||
if (ELEM(wmn->data, ND_ANIMPLAY))
|
||||
ED_region_tag_redraw(ar);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ static void statusbar_header_region_listener(
|
||||
/* context changes */
|
||||
switch (wmn->category) {
|
||||
case NC_SCREEN:
|
||||
if (ELEM(wmn->data, ND_LAYER, ND_SCREENCAST, ND_ANIMPLAY)) {
|
||||
if (ELEM(wmn->data, ND_LAYER, ND_ANIMPLAY)) {
|
||||
ED_region_tag_redraw(ar);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -584,8 +584,7 @@ typedef struct UserDef {
|
||||
int view_frame_keyframes; /* number of keyframes to zoom around current frame */
|
||||
float view_frame_seconds; /* seconds to zoom around current frame */
|
||||
|
||||
short scrcastfps; /* frame rate for screencast to be played back */
|
||||
short scrcastwait; /* milliseconds between screencast snapshots */
|
||||
char _pad1[4];
|
||||
|
||||
short widget_unit; /* private, defaults to 20 for 72 DPI setting */
|
||||
short anisotropic_filter;
|
||||
|
||||
@@ -4391,17 +4391,6 @@ static void rna_def_userdef_system(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Audio Channels", "Audio channel count");
|
||||
RNA_def_property_update(prop, 0, "rna_UserDef_audio_update");
|
||||
|
||||
prop = RNA_def_property(srna, "screencast_fps", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "scrcastfps");
|
||||
RNA_def_property_range(prop, 10, 100);
|
||||
RNA_def_property_ui_text(prop, "FPS", "Frame rate for the screencast to be played back");
|
||||
|
||||
prop = RNA_def_property(srna, "screencast_wait_time", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "scrcastwait");
|
||||
RNA_def_property_range(prop, 10, 1000);
|
||||
RNA_def_property_ui_text(prop, "Wait Timer (ms)",
|
||||
"Time in milliseconds between each frame recorded for screencast");
|
||||
|
||||
prop = RNA_def_property(srna, "use_text_antialiasing", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_negative_sdna(prop, NULL, "text_render", USER_TEXT_DISABLE_AA);
|
||||
RNA_def_property_ui_text(prop, "Text Anti-aliasing", "Draw user interface text anti-aliased");
|
||||
|
||||
@@ -504,7 +504,6 @@ enum {
|
||||
WM_JOB_TYPE_COMPOSITE,
|
||||
WM_JOB_TYPE_RENDER,
|
||||
WM_JOB_TYPE_RENDER_PREVIEW, /* UI preview */
|
||||
WM_JOB_TYPE_SCREENCAST,
|
||||
WM_JOB_TYPE_OBJECT_SIM_OCEAN,
|
||||
WM_JOB_TYPE_OBJECT_SIM_FLUID,
|
||||
WM_JOB_TYPE_OBJECT_BAKE_TEXTURE,
|
||||
|
||||
@@ -272,7 +272,6 @@ typedef struct wmNotifier {
|
||||
/* NC_SCREEN */
|
||||
#define ND_LAYOUTBROWSE (1<<16)
|
||||
#define ND_LAYOUTDELETE (2<<16)
|
||||
#define ND_SCREENCAST (3<<16)
|
||||
#define ND_ANIMPLAY (4<<16)
|
||||
#define ND_GPENCIL (5<<16)
|
||||
#define ND_EDITOR_CHANGED (6<<16) /*sent to new editors after switching to them*/
|
||||
|
||||
@@ -1314,11 +1314,6 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr C_void_ptr
|
||||
state = GHOST_GetWindowState(win->ghostwin);
|
||||
win->windowstate = state;
|
||||
|
||||
/* stop screencast if resize */
|
||||
if (type == GHOST_kEventWindowSize) {
|
||||
WM_jobs_stop(wm, WM_window_get_active_screen(win), NULL);
|
||||
}
|
||||
|
||||
WM_window_set_dpi(win);
|
||||
|
||||
/* win32: gives undefined window size when minimized */
|
||||
|
||||
Reference in New Issue
Block a user