Merge branch 'master' into blender2.8

This commit is contained in:
2018-02-27 20:22:26 +11:00
5 changed files with 42 additions and 5 deletions

View File

@@ -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);

View File

@@ -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.

View File

@@ -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);

View File

@@ -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);

View File

@@ -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 {