Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/include/BIF_glutil.h4
-rw-r--r--source/blender/include/BIF_screen.h6
-rw-r--r--source/blender/makesdna/DNA_space_types.h1
-rw-r--r--source/blender/src/drawnode.c35
-rw-r--r--source/blender/src/drawobject.c2
-rw-r--r--source/blender/src/drawtext.c3
-rw-r--r--source/blender/src/editmesh_loop.c4
-rw-r--r--source/blender/src/editmesh_mods.c2
-rw-r--r--source/blender/src/editmesh_tools.c3
-rw-r--r--source/blender/src/editscreen.c55
-rw-r--r--source/blender/src/editsima.c2
-rw-r--r--source/blender/src/editview.c4
-rw-r--r--source/blender/src/glutil.c20
-rw-r--r--source/blender/src/header_node.c2
-rw-r--r--source/blender/src/interface.c26
-rw-r--r--source/blender/src/previewrender.c4
-rw-r--r--source/blender/src/space.c2
-rwxr-xr-xsource/blender/src/transform.c3
18 files changed, 89 insertions, 89 deletions
diff --git a/source/blender/include/BIF_glutil.h b/source/blender/include/BIF_glutil.h
index 48d4d903d28..db2b55aab86 100644
--- a/source/blender/include/BIF_glutil.h
+++ b/source/blender/include/BIF_glutil.h
@@ -198,12 +198,14 @@ void gla2DGetMap(gla2DDrawInfo *di, struct rctf *rect);
void gla2DSetMap(gla2DDrawInfo *di, struct rctf *rect);
-/* use this for platform hacks. for now glPointSize is solved here */
+/* use this for platform hacks. glPointSize is solved here */
void bglBegin(int mode);
void bglEnd(void);
void bglVertex3fv(float *vec);
void bglVertex3f(float x, float y, float z);
void bglVertex2fv(float *vec);
+/* intel gfx cards frontbuffer problem */
+void bglFlush(void);
void set_inverted_drawing(int enable);
diff --git a/source/blender/include/BIF_screen.h b/source/blender/include/BIF_screen.h
index c76f961014a..e97d10b2455 100644
--- a/source/blender/include/BIF_screen.h
+++ b/source/blender/include/BIF_screen.h
@@ -125,12 +125,6 @@ int do_screenhandlers(struct bScreen *sc);
int has_screenhandler(struct bScreen *sc, short eventcode);
/***/
-
-/**
- * Draw @a text in the header of each info window
- * of the given screen.
- */
-void screen_draw_info_text(struct bScreen *sc, char *text);
/* return all layers of all 3d windows in a screen */
unsigned int screen_view3d_layers(void);
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 105218a0cab..98ca418cdde 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -323,6 +323,7 @@ typedef struct SpaceNode {
/* snode->flag */
#define SNODE_DO_PREVIEW 1
+#define SNODE_BACKDRAW 2
#
#
diff --git a/source/blender/src/drawnode.c b/source/blender/src/drawnode.c
index 0fc2b207f5b..81b2433ee8e 100644
--- a/source/blender/src/drawnode.c
+++ b/source/blender/src/drawnode.c
@@ -37,6 +37,7 @@
#include "DNA_action_types.h"
#include "DNA_ipo_types.h"
#include "DNA_ID.h"
+#include "DNA_image_types.h"
#include "DNA_material_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
@@ -76,6 +77,7 @@
#include "MEM_guardedalloc.h"
#include "RE_pipeline.h"
+#include "IMB_imbuf_types.h"
#include "blendef.h"
#include "butspace.h"
@@ -1117,6 +1119,33 @@ static void draw_nodespace_grid(SpaceNode *snode)
glEnd();
}
+static void draw_nodespace_back(ScrArea *sa, SpaceNode *snode)
+{
+ Image *ima;
+
+ draw_nodespace_grid(snode);
+
+ if(snode->flag & SNODE_BACKDRAW) {
+ ima= (Image *)find_id("IM", "Viewer Node");
+ if(ima && ima->ibuf) {
+ /* somehow the offset has to be calculated inverse */
+
+ glaDefine2DArea(&sa->winrct);
+ /* ortho at pixel level curarea */
+ myortho2(-0.375, sa->winx-0.375, -0.375, sa->winy-0.375);
+
+ if(ima->ibuf->rect)
+ glaDrawPixelsSafe((sa->winx-ima->ibuf->x)/2, (sa->winy-ima->ibuf->y)/2, ima->ibuf->x, ima->ibuf->y, ima->ibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, ima->ibuf->rect);
+ else
+ glaDrawPixelsSafe((sa->winx-ima->ibuf->x)/2, (sa->winy-ima->ibuf->y)/2, ima->ibuf->x, ima->ibuf->y, ima->ibuf->x, GL_RGBA, GL_FLOAT, ima->ibuf->rect_float);
+
+ /* sort this out, this should not be needed */
+ myortho2(snode->v2d.cur.xmin, snode->v2d.cur.xmax, snode->v2d.cur.ymin, snode->v2d.cur.ymax);
+ bwin_clear_viewmat(sa->win); /* clear buttons view */
+ glLoadIdentity();
+ }
+ }
+}
static void nodeshadow(rctf *rct, float radius, float aspect, int select)
{
@@ -1545,9 +1574,11 @@ static void node_draw_basis(ScrArea *sa, SpaceNode *snode, bNode *node)
snode_drawstring(snode, node->name, (int)(iconofs - rct->xmin-18.0f));
/* body */
- BIF_ThemeColor(TH_NODE);
+ BIF_ThemeColor4(TH_NODE);
+ glEnable(GL_BLEND);
uiSetRoundBox(8);
uiRoundBox(rct->xmin, rct->ymin, rct->xmax, rct->ymax-NODE_DY, BASIS_RAD);
+ glDisable(GL_BLEND);
/* scaling indicator */
node_scaling_widget(TH_NODE, snode->aspect, rct->xmax-BASIS_RAD*snode->aspect, rct->ymin, rct->xmax, rct->ymin+BASIS_RAD*snode->aspect);
@@ -1958,7 +1989,7 @@ void drawnodespace(ScrArea *sa, void *spacedata)
snode->curfont= uiSetCurFont_ext(snode->aspect);
/* backdrop */
- draw_nodespace_grid(snode);
+ draw_nodespace_back(sa, snode);
/* nodes */
snode_set_context(snode);
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c
index 9d990f97d16..53337651249 100644
--- a/source/blender/src/drawobject.c
+++ b/source/blender/src/drawobject.c
@@ -4069,7 +4069,7 @@ void draw_object_ext(Base *base)
G.f &= ~G_DRAW_EXT;
- glFlush(); /* reveil frontbuffer drawing */
+ bglFlush(); /* reveil frontbuffer drawing */
glDrawBuffer(GL_BACK);
if(G.vd->zbuf) {
diff --git a/source/blender/src/drawtext.c b/source/blender/src/drawtext.c
index 5025b08de1e..c2c6aa89e7d 100644
--- a/source/blender/src/drawtext.c
+++ b/source/blender/src/drawtext.c
@@ -64,6 +64,7 @@
#include "BKE_main.h"
#include "BIF_gl.h"
+#include "BIF_glutil.h"
#include "BIF_keyval.h"
#include "BIF_interface.h"
#include "BIF_drawtext.h"
@@ -820,6 +821,7 @@ static void do_textscroll(SpaceText *st, int mode)
glDrawBuffer(GL_FRONT);
uiEmboss(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax, st->flags & ST_SCROLL_SELECT);
+ bglFlush();
glDrawBuffer(GL_BACK);
getmouseco_areawin(mval);
@@ -857,6 +859,7 @@ static void do_textscroll(SpaceText *st, int mode)
glDrawBuffer(GL_FRONT);
uiEmboss(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax, st->flags & ST_SCROLL_SELECT);
+ bglFlush();
glDrawBuffer(GL_BACK);
}
diff --git a/source/blender/src/editmesh_loop.c b/source/blender/src/editmesh_loop.c
index 609b68b5cf5..8a88e40cb78 100644
--- a/source/blender/src/editmesh_loop.c
+++ b/source/blender/src/editmesh_loop.c
@@ -506,7 +506,7 @@ static CutCurve *get_mouse_trail(int *len, char mode)
if( event==ESCKEY || event==RIGHTMOUSE ) {
if (curve) MEM_freeN(curve);
*len=0;
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
return(NULL);
break;
@@ -586,7 +586,7 @@ static CutCurve *get_mouse_trail(int *len, char mode)
}
}
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
persp(PERSP_VIEW);
diff --git a/source/blender/src/editmesh_mods.c b/source/blender/src/editmesh_mods.c
index ba6dce0001f..57b481e3191 100644
--- a/source/blender/src/editmesh_mods.c
+++ b/source/blender/src/editmesh_mods.c
@@ -696,7 +696,7 @@ static void unified_select_draw(EditVert *eve, EditEdge *eed, EditFace *efa)
glPointSize(1.0);
glPopMatrix();
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
if(G.vd->flag & V3D_CLIPPING)
diff --git a/source/blender/src/editmesh_tools.c b/source/blender/src/editmesh_tools.c
index d7bcf39a1cf..3ce7ef4cd16 100644
--- a/source/blender/src/editmesh_tools.c
+++ b/source/blender/src/editmesh_tools.c
@@ -75,6 +75,7 @@ editmesh_tool.c: UI called tools for editmesh, geometry changes here, otherwise
#include "BIF_cursors.h"
#include "BIF_editmesh.h"
#include "BIF_gl.h"
+#include "BIF_glutil.h"
#include "BIF_graphics.h"
#include "BIF_interface.h"
#include "BIF_mywindow.h"
@@ -4583,7 +4584,7 @@ void bevel_menu()
setlinestyle(0);
persp(PERSP_VIEW);
- glFlush(); // flush display for frontbuffer
+ bglFlush(); // flush display for frontbuffer
glDrawBuffer(GL_BACK);
}
while(qtest()) {
diff --git a/source/blender/src/editscreen.c b/source/blender/src/editscreen.c
index 7ae0bdfac5e..ca5037f5986 100644
--- a/source/blender/src/editscreen.c
+++ b/source/blender/src/editscreen.c
@@ -712,7 +712,7 @@ void splash(void *data, int datasize, char *string)
BMF_DrawString(font, string);
}
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
IMB_freeImBuf(bbuf);
@@ -2750,7 +2750,7 @@ static void joinarea_interactive(ScrArea *area, ScrEdge *onedge)
scrarea_draw_shape_dark(scr,'d');
else if(scr==down)
scrarea_draw_shape_dark(scr,'u');
- glFlush();
+ bglFlush();
/* "never ending loop" of interactive selection */
while(!ok) {
@@ -2793,7 +2793,7 @@ static void joinarea_interactive(ScrArea *area, ScrEdge *onedge)
/* cancel joining of joining */
if(val && (event==ESCKEY || event==RIGHTMOUSE)) ok= -1;
- glFlush();
+ bglFlush();
}
glReadBuffer(GL_BACK);
@@ -3074,12 +3074,12 @@ static void splitarea_interactive(ScrArea *area, ScrEdge *onedge)
if(val && (event==ESCKEY || event==RIGHTMOUSE)) {
ok= -1;
}
- glFlush();
+ bglFlush();
}
if (!first) {
scrarea_draw_splitpoint(sa, dir, fac);
- glFlush();
+ bglFlush();
}
glReadBuffer(GL_BACK);
glDrawBuffer(GL_BACK);
@@ -3390,7 +3390,7 @@ static void moveareas(ScrEdge *edge)
delta= (dir=='h')?(mval[1]-mvalo[1]):(mval[0]-mvalo[0]);
delta= CLAMPIS(delta, -smaller, bigger);
draw_front_xor_dirdist_line(dir, edge_position+delta, edge_start, edge_end);
- glFlush();
+ bglFlush();
}
else if (event==LEFTMOUSE) {
doit= 1;
@@ -3405,7 +3405,7 @@ static void moveareas(ScrEdge *edge)
}
draw_front_xor_dirdist_line(dir, edge_position+delta, edge_start, edge_end);
- glFlush();
+ bglFlush();
glReadBuffer(GL_BACK);
glDrawBuffer(GL_BACK);
@@ -3638,47 +3638,6 @@ void initscreen(void)
default_twosplit();
}
-/***/
-
-void screen_draw_info_text(bScreen *sc, char *text) {
- Window *oldactwin= winlay_get_active_window();
- ScrArea *sa;
-
- /*
- * Because this is called from within rendering
- * internals it is possible our window is not
- * active.
- */
- window_make_active(mainwin);
-
- for (sa= sc->areabase.first; sa; sa= sa->next) {
- if (sa->spacetype==SPACE_INFO) {
- int x= sa->headbutlen - 28;
- int y= 6;
-
- areawinset(sa->headwin);
- glDrawBuffer(GL_FRONT);
-
- cpack(0xA08060);
- glRecti(x-11, y-6, x+55, y+13);
-
- cpack(0x909090);
- glRecti(x+55, y-6, x+1280, y+14);
-
- cpack(0x0);
- glRasterPos2i(x, y);
- BMF_DrawString(G.fonts, text);
-
- glFlush();
- glDrawBuffer(GL_BACK);
-
- sa->head_swap= WIN_FRONT_OK;
- }
- }
-
- if (oldactwin && oldactwin!=mainwin) window_make_active(oldactwin);
-}
-
static int curcursor;
int get_cursor(void) {
diff --git a/source/blender/src/editsima.c b/source/blender/src/editsima.c
index 6785a0e607f..25454eece40 100644
--- a/source/blender/src/editsima.c
+++ b/source/blender/src/editsima.c
@@ -68,6 +68,7 @@
#include "BKE_utildefines.h"
#include "BIF_gl.h"
+#include "BIF_glutil.h"
#include "BIF_interface.h"
#include "BIF_screen.h"
#include "BIF_drawimage.h"
@@ -911,6 +912,7 @@ void uvedit_selectionCB(short selecting, Object *editobj, short *mval, float rad
else { /* force_draw() is no good here... */
glDrawBuffer(GL_FRONT);
draw_tfaces();
+ bglFlush();
glDrawBuffer(GL_BACK);
}
}
diff --git a/source/blender/src/editview.c b/source/blender/src/editview.c
index c5bf0e9c487..19a644c5c7b 100644
--- a/source/blender/src/editview.c
+++ b/source/blender/src/editview.c
@@ -766,7 +766,7 @@ int gesture(void)
if(i) {
if(lasso) draw_lasso_select(mcords, i, 0);
else sdrawXORline(mcords[i-1][0], mcords[i-1][1], mcords[i][0], mcords[i][1]);
- glFlush();
+ bglFlush();
}
i++;
}
@@ -1777,7 +1777,7 @@ void borderselect(void)
}
}
/* frontbuffer flush */
- glFlush();
+ bglFlush();
MEM_freeN(vbuffer);
diff --git a/source/blender/src/glutil.c b/source/blender/src/glutil.c
index ef6728c1a0a..dced81579c3 100644
--- a/source/blender/src/glutil.c
+++ b/source/blender/src/glutil.c
@@ -32,6 +32,7 @@
* ***** END GPL/BL DUAL LICENSE BLOCK *****
*/
+#include <stdio.h>
#include <math.h>
#include "MEM_guardedalloc.h"
@@ -46,6 +47,7 @@
#include "BIF_gl.h"
#include "BIF_glutil.h"
+#include "BIF_mywindow.h"
/* Invert line handling */
@@ -621,6 +623,24 @@ void bglPolygonOffset(float dist)
}
}
+static int is_a_really_crappy_intel_card(void)
+{
+ static int well_is_it= -1;
+
+ /* Do you understand the implication? Do you? */
+ if (well_is_it==-1)
+ well_is_it= (strcmp((char*) glGetString(GL_VENDOR), "Intel Inc.") == 0);
+
+ return well_is_it;
+}
+void bglFlush(void)
+{
+ glFlush();
+#ifdef __APPLE__
+ if(is_a_really_crappy_intel_card())
+ myswapbuffers(); //hack to get mac intel graphics to show frontbuffer
+#endif
+}
diff --git a/source/blender/src/header_node.c b/source/blender/src/header_node.c
index 91e421736f2..d639d9b0bea 100644
--- a/source/blender/src/header_node.c
+++ b/source/blender/src/header_node.c
@@ -602,6 +602,8 @@ void node_buttons(ScrArea *sa)
xco+= 80;
uiDefButBitS(block, TOG, R_COMP_FREE, B_NOP, "Free Unused", xco+5,0,80,19, &G.scene->r.scemode, 0.0f, 0.0f, 0, 0, "Free Nodes that are not used while composite");
xco+= 80;
+ uiDefButBitS(block, TOG, SNODE_BACKDRAW, B_NOP, "Backdrop", xco+5,0,80,19, &snode->flag, 0.0f, 0.0f, 0, 0, "Use active Viewer Node output as backdrop");
+ xco+= 80;
}
/* always as last */
diff --git a/source/blender/src/interface.c b/source/blender/src/interface.c
index b456e1d315c..3a4a15a723a 100644
--- a/source/blender/src/interface.c
+++ b/source/blender/src/interface.c
@@ -300,18 +300,6 @@ static uiOverDraw *ui_begin_overdraw(int minx, int miny, int maxx, int maxy)
return od;
}
-#ifdef __APPLE__
-static int is_a_really_crappy_intel_card(void) {
- static int well_is_it= -1;
-
- /* Do you understand the implication? Do you? */
- if (well_is_it==-1)
- well_is_it= (strcmp((char*) glGetString(GL_VENDOR), "Intel Inc.") == 0);
-
- return well_is_it;
-}
-#endif
-
static void ui_flush_overdraw(uiOverDraw *od)
{
@@ -322,11 +310,7 @@ static void ui_flush_overdraw(uiOverDraw *od)
glRasterPos2s(od->x, od->y);
myglCopyPixels(od->x, od->y, od->sx, od->sy, GL_COLOR);
glEnable(GL_DITHER);
- glFlush();
-#ifdef __APPLE__
- if (is_a_really_crappy_intel_card())
- myswapbuffers(); //hack to get mac intel graphics to show menus
-#endif
+ bglFlush();
glDrawBuffer(GL_BACK);
}
@@ -371,7 +355,7 @@ static void ui_end_overdraw(uiOverDraw *od)
glRasterPos2s(od->x, od->y);
glDrawPixels(od->sx, od->sy, GL_RGBA, GL_UNSIGNED_BYTE, od->rect);
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
glEnable(GL_DITHER);
@@ -394,7 +378,7 @@ void ui_block_flush_back(uiBlock *block)
/* exception, when we cannot use backbuffer for draw... */
if(block->flag & UI_BLOCK_FRONTBUFFER) {
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
block->needflush= 0;
return;
@@ -423,7 +407,7 @@ void ui_block_flush_back(uiBlock *block)
myglCopyPixels(minx, miny, sizex, sizey, GL_COLOR);
#endif
glEnable(GL_DITHER);
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
mywinset(block->win);
@@ -4051,7 +4035,7 @@ static void ui_do_active_linklines(uiBlock *block, short *mval)
}
but= but->next;
}
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
}
}
diff --git a/source/blender/src/previewrender.c b/source/blender/src/previewrender.c
index 5bf0a295403..a6e0d2ef27e 100644
--- a/source/blender/src/previewrender.c
+++ b/source/blender/src/previewrender.c
@@ -382,7 +382,7 @@ static void previewrender_progress(RenderResult *rr, volatile rcti *renrect)
glDrawBuffer(GL_FRONT);
glaDrawPixelsSafe_to32(ofsx, ofsy, rr->rectx, rr->recty, rr->rectx, rl->rectf);
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
}
@@ -626,7 +626,7 @@ static void view3d_previewrender_progress(RenderResult *rr, volatile rcti *renre
glDrawBuffer(GL_FRONT);
glaDefine2DArea(&curarea->winrct);
glaDrawPixelsSafe_to32(ofsx, ofsy, rr->rectx, rr->recty, rr->rectx, rl->rectf);
- glFlush();
+ bglFlush();
glDrawBuffer(GL_BACK);
}
diff --git a/source/blender/src/space.c b/source/blender/src/space.c
index aa3536ec2ba..91d67ceb5d0 100644
--- a/source/blender/src/space.c
+++ b/source/blender/src/space.c
@@ -2421,7 +2421,7 @@ static void info_user_themebuts(uiBlock *block, short y1, short y2, short y3)
}
else {
uiBlockBeginAlign(block);
- if ELEM7(th_curcol, TH_PANEL, TH_LAMP, TH_FACE, TH_FACE_SELECT, TH_MENU_BACK, TH_MENU_HILITE, TH_MENU_ITEM) {
+ if ELEM8(th_curcol, TH_PANEL, TH_LAMP, TH_FACE, TH_FACE_SELECT, TH_MENU_BACK, TH_MENU_HILITE, TH_MENU_ITEM, TH_NODE) {
uiDefButC(block, NUMSLI, B_UPDATE_THEME,"A ", 465,y3+25,200,20, col+3, 0.0, 255.0, B_THEMECOL, 0, "");
}
uiDefButC(block, NUMSLI, B_UPDATE_THEME,"R ", 465,y3,200,20, col, 0.0, 255.0, B_THEMECOL, 0, "");
diff --git a/source/blender/src/transform.c b/source/blender/src/transform.c
index f450628b640..76e6c7eaf51 100755
--- a/source/blender/src/transform.c
+++ b/source/blender/src/transform.c
@@ -64,6 +64,7 @@
#include "BIF_editview.h" /* arrows_move_cursor */
#include "BIF_gl.h"
+#include "BIF_glutil.h"
#include "BIF_mywindow.h"
#include "BIF_resources.h"
#include "BIF_screen.h"
@@ -135,7 +136,7 @@ static void helpline(TransInfo *t, float *vec)
setlinestyle(0);
persp(PERSP_VIEW);
- glFlush(); // flush display for frontbuffer
+ bglFlush(); // flush display for frontbuffer
glDrawBuffer(GL_BACK);
}
}