Merge branch 'master' into blender2.8
This commit is contained in:
@@ -47,6 +47,7 @@ enum {
|
||||
|
||||
void GPU_select_begin(unsigned int *buffer, unsigned int bufsize, const struct rcti *input, char mode, int oldhits);
|
||||
bool GPU_select_load_id(unsigned int id);
|
||||
void GPU_select_finalize(void);
|
||||
unsigned int GPU_select_end(void);
|
||||
bool GPU_select_query_check_active(void);
|
||||
|
||||
|
||||
@@ -149,6 +149,29 @@ bool GPU_select_load_id(unsigned int id)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Needed when GL context of #GPU_select_end
|
||||
* can't be used to finalize selection operations
|
||||
* (because of context changes).
|
||||
*/
|
||||
void GPU_select_finalize(void)
|
||||
{
|
||||
if (!g_select_state.select_is_active)
|
||||
return;
|
||||
|
||||
switch (g_select_state.algorithm) {
|
||||
case ALGO_GL_LEGACY:
|
||||
case ALGO_GL_QUERY:
|
||||
{
|
||||
break;
|
||||
}
|
||||
default: /* ALGO_GL_PICK */
|
||||
{
|
||||
gpu_select_pick_finalize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanup and flush selection results to buffer.
|
||||
* Return number of hits and hits in buffer.
|
||||
|
||||
@@ -524,6 +524,19 @@ bool gpu_select_pick_load_id(unsigned int id)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Optional), call before 'gpu_select_pick_end' if GL context is not kept.
|
||||
* is not compatible with regular select case.
|
||||
* */
|
||||
void gpu_select_pick_finalize(void)
|
||||
{
|
||||
GPUPickState *ps = &g_pick_state;
|
||||
if (ps->gl.is_init) {
|
||||
/* force finishing last pass */
|
||||
gpu_select_pick_load_id(ps->gl.prev_id);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int gpu_select_pick_end(void)
|
||||
{
|
||||
GPUPickState *ps = &g_pick_state;
|
||||
@@ -533,10 +546,7 @@ unsigned int gpu_select_pick_end(void)
|
||||
#endif
|
||||
|
||||
if (ps->is_cached == false) {
|
||||
if (ps->gl.is_init) {
|
||||
/* force finishing last pass */
|
||||
gpu_select_pick_load_id(ps->gl.prev_id);
|
||||
}
|
||||
gpu_select_pick_finalize();
|
||||
|
||||
gpuPopAttrib();
|
||||
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
/* gpu_select_pick */
|
||||
void gpu_select_pick_begin(unsigned int (*buffer)[4], unsigned int bufsize, const rcti *input, char mode);
|
||||
bool gpu_select_pick_load_id(unsigned int id);
|
||||
void gpu_select_pick_finalize(void);
|
||||
unsigned int gpu_select_pick_end(void);
|
||||
|
||||
void gpu_select_pick_cache_begin(void);
|
||||
|
||||
@@ -2196,11 +2196,13 @@ static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, const wmEvent *U
|
||||
char path[FILE_MAX];
|
||||
|
||||
RNA_string_get(op->ptr, "filepath", path);
|
||||
if (BLI_exists(path)) {
|
||||
if (RNA_boolean_get(op->ptr, "check_existing") && BLI_exists(path)) {
|
||||
ret = WM_operator_confirm_message_ex(C, op, IFACE_("Save Over?"), ICON_QUESTION, path);
|
||||
}
|
||||
else {
|
||||
ret = wm_save_as_mainfile_exec(C, op);
|
||||
/* Without this there is no feedback the file was saved. */
|
||||
BKE_reportf(op->reports, RPT_INFO, "Saved \"%s\"", BLI_path_basename(path));
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user