p/s proxy icon, rework window locks, segv in close_mixers + exportedl, ffmpeg default...
[goodguy/history.git] / cinelerra-5.1 / guicast / bcwindowdraw.C
index 5f0bb48cb1a5e2b45ff1da0a40712dd861a05551..c81c36963223fa2b91e6ef3faeaaeff3ba71386e 100644 (file)
@@ -29,6 +29,7 @@
 #include "bcwindowbase.h"
 #include "clip.h"
 #include "bccolors.h"
+#include "bctrace.h"
 #include "cursors.h"
 #include "fonts.h"
 #include "vframe.h"
@@ -38,7 +39,7 @@
 #include "workarounds.h"
 
 void BC_WindowBase::copy_area(int x1, int y1, int x2, int y2, int w, int h, BC_Pixmap *pixmap)
-{
+{ BT
        XCopyArea(top_level->display,
                pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap,
                pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap,
@@ -47,7 +48,7 @@ void BC_WindowBase::copy_area(int x1, int y1, int x2, int y2, int w, int h, BC_P
 
 
 void BC_WindowBase::draw_box(int x, int y, int w, int h, BC_Pixmap *pixmap)
-{
+{ BT
 //if(x == 0) printf("BC_WindowBase::draw_box %d %d %d %d\n", x, y, w, h);
        XFillRectangle(top_level->display,
                pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap,
@@ -56,7 +57,7 @@ void BC_WindowBase::draw_box(int x, int y, int w, int h, BC_Pixmap *pixmap)
 
 
 void BC_WindowBase::draw_circle(int x, int y, int w, int h, BC_Pixmap *pixmap)
-{
+{ BT
        XDrawArc(top_level->display,
                pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap,
                top_level->gc, x, y, (w - 1), (h - 2), 0 * 64, 360 * 64);
@@ -64,7 +65,7 @@ void BC_WindowBase::draw_circle(int x, int y, int w, int h, BC_Pixmap *pixmap)
 
 void BC_WindowBase::draw_arc(int x, int y, int w, int h,
        int start_angle, int angle_length, BC_Pixmap *pixmap)
-{
+{ BT
        XDrawArc(top_level->display,
                pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap,
                top_level->gc, x, y, (w - 1), (h - 2), start_angle * 64,
@@ -72,14 +73,14 @@ void BC_WindowBase::draw_arc(int x, int y, int w, int h,
 }
 
 void BC_WindowBase::draw_disc(int x, int y, int w, int h, BC_Pixmap *pixmap)
-{
+{ BT
        XFillArc(top_level->display,
                pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap,
                top_level->gc, x, y, (w - 1), (h - 2), 0 * 64, 360 * 64);
 }
 
 void BC_WindowBase::clear_box(int x, int y, int w, int h, BC_Pixmap *pixmap)
-{
+{ BT
        set_color(bg_color);
        Pixmap xpixmap = pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap;
        XFillRectangle(top_level->display, xpixmap, top_level->gc, x, y, w, h);
@@ -94,6 +95,7 @@ void BC_WindowBase::draw_text_line(int x, int y, const char *text, int len,
                return;
        }
 #endif
+ BT
        Pixmap xpixmap = pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap;
        if( get_resources()->use_fontset ) {
                XFontSet fontset = top_level->get_curr_fontset();
@@ -147,7 +149,7 @@ void BC_WindowBase::draw_text(int x, int y, const char *text, int length,
                        draw_xft_text(x, y, text, length, pixmap);
                        return;
                }
-
+ BT
                for(int i = 0, j = 0; i <= length; i++) {
                        if(text[i] == '\n' || text[i] == 0) {
                                if(get_resources()->use_fontset && top_level->get_curr_fontset()) {
@@ -184,7 +186,7 @@ void BC_WindowBase::draw_utf8_text(int x, int y,
                        1);
                return;
        }
-
+ BT
        for(int i = 0, j = 0; i <= length; i++)
        {
                if(text[i] == '\n' || text[i] == 0)
@@ -250,7 +252,7 @@ void BC_WindowBase::draw_xft_text(int x, int y,
 
 void BC_WindowBase::xft_draw_string(XftColor *xft_color, XftFont *xft_font,
                int x, int y, const FcChar32 *fc, int len, BC_Pixmap *pixmap)
-{
+{ BT
        Pixmap draw_pixmap = 0;
        XftDraw *xft_draw = (XftDraw *)
                (pixmap ? pixmap->opaque_xft_draw : this->pixmap->opaque_xft_draw);
@@ -295,6 +297,7 @@ int BC_WindowBase::draw_single_text(int draw, int font,
        if( !length ) return 0;
 
        if( !get_resources()->use_xft ) {
+ BT
                if( !get_font_struct(font) ) return 0;
                XChar2b xtext[length], *xp = xtext;
                for( int i=0; i<length; ++i,++xp ) {
@@ -437,7 +440,7 @@ void BC_WindowBase::draw_center_text(int x, int y, const char *text, int length)
 }
 
 void BC_WindowBase::draw_line(int x1, int y1, int x2, int y2, BC_Pixmap *pixmap)
-{
+{ BT
 // Some X drivers can't draw 0 length lines
        if(x1 == x2 && y1 == y2)
        {
@@ -456,7 +459,7 @@ void BC_WindowBase::draw_line(int x1, int y1, int x2, int y2, BC_Pixmap *pixmap)
 }
 
 void BC_WindowBase::draw_polygon(ArrayList<int> *x, ArrayList<int> *y, BC_Pixmap *pixmap)
-{
+{ BT
        int npoints = MIN(x->total, y->total);
        XPoint *points = new XPoint[npoints];
 
@@ -477,7 +480,7 @@ void BC_WindowBase::draw_polygon(ArrayList<int> *x, ArrayList<int> *y, BC_Pixmap
 }
 
 void BC_WindowBase::fill_polygon(ArrayList<int> *x, ArrayList<int> *y, BC_Pixmap *pixmap)
-{
+{ BT
        int npoints = MIN(x->total, y->total);
        XPoint *points = new XPoint[npoints];
 
@@ -500,7 +503,7 @@ void BC_WindowBase::fill_polygon(ArrayList<int> *x, ArrayList<int> *y, BC_Pixmap
 
 
 void BC_WindowBase::draw_rectangle(int x, int y, int w, int h)
-{
+{ BT
        XDrawRectangle(top_level->display,
                pixmap->opaque_pixmap,
                top_level->gc,
@@ -668,7 +671,7 @@ void BC_WindowBase::draw_border(char *text, int x, int y, int w, int h)
 }
 
 void BC_WindowBase::draw_triangle_down_flat(int x, int y, int w, int h)
-{
+{ BT
        int x1, y1, x2, y2, x3;
        XPoint point[3];
 
@@ -689,7 +692,7 @@ void BC_WindowBase::draw_triangle_down_flat(int x, int y, int w, int h)
 
 void BC_WindowBase::draw_triangle_up(int x, int y, int w, int h,
        int light1, int light2, int middle, int shadow1, int shadow2)
-{
+{ BT
        int x1, y1, x2, y2, x3;
        XPoint point[3];
 
@@ -762,7 +765,7 @@ void BC_WindowBase::draw_triangle_down(int x, int y, int w, int h,
 
 void BC_WindowBase::draw_triangle_left(int x, int y, int w, int h,
        int light1, int light2, int middle, int shadow1, int shadow2)
-{
+{ BT
        int x1, y1, x2, y2, y3;
        XPoint point[3];
 
@@ -799,7 +802,7 @@ void BC_WindowBase::draw_triangle_left(int x, int y, int w, int h,
 
 void BC_WindowBase::draw_triangle_right(int x, int y, int w, int h,
        int light1, int light2, int middle, int shadow1, int shadow2)
-{
+{ BT
        int x1, y1, x2, y2, y3;
        XPoint point[3];
 
@@ -847,7 +850,7 @@ void BC_WindowBase::draw_check(int x, int y)
 }
 
 void BC_WindowBase::draw_tiles(BC_Pixmap *tile, int origin_x, int origin_y, int x, int y, int w, int h)
-{
+{ BT
        if(!tile)
        {
                set_color(bg_color);
@@ -865,7 +868,7 @@ void BC_WindowBase::draw_tiles(BC_Pixmap *tile, int origin_x, int origin_y, int
 }
 
 void BC_WindowBase::draw_top_tiles(BC_WindowBase *parent_window, int x, int y, int w, int h)
-{
+{ BT
        Window tempwin;
        int origin_x, origin_y;
        XTranslateCoordinates(top_level->display,
@@ -892,7 +895,7 @@ void BC_WindowBase::draw_top_background(BC_WindowBase *parent_window,
        int w,
        int h,
        BC_Pixmap *pixmap)
-{
+{ BT
        Window tempwin;
        int top_x, top_y;
        XLockDisplay(top_level->display);
@@ -943,8 +946,7 @@ void BC_WindowBase::draw_bitmap(BC_Bitmap *bitmap,
        int src_w,
        int src_h,
        BC_Pixmap *pixmap)
-{
-
+{ BT
 // Hide cursor if video enabled
        update_video_cursor();
 
@@ -1002,7 +1004,7 @@ void BC_WindowBase::draw_bitmap(BC_Bitmap *bitmap,
 
 
 void BC_WindowBase::draw_pixel(int x, int y, BC_Pixmap *pixmap)
-{
+{ BT
        XDrawPoint(top_level->display,
                pixmap ? pixmap->opaque_pixmap : this->pixmap->opaque_pixmap,
                top_level->gc,
@@ -1019,7 +1021,7 @@ void BC_WindowBase::draw_pixmap(BC_Pixmap *pixmap,
        int src_x,
        int src_y,
        BC_Pixmap *dst)
-{
+{ BT
        pixmap->write_drawable(dst ? dst->opaque_pixmap : this->pixmap->opaque_pixmap,
                        dest_x,
                        dest_y,
@@ -1102,7 +1104,7 @@ void BC_WindowBase::draw_tooltip(const char *text)
 }
 
 void BC_WindowBase::slide_left(int distance)
-{
+{ BT
        if(distance < w)
        {
                XCopyArea(top_level->display,
@@ -1119,7 +1121,7 @@ void BC_WindowBase::slide_left(int distance)
 }
 
 void BC_WindowBase::slide_right(int distance)
-{
+{ BT
        if(distance < w)
        {
                XCopyArea(top_level->display,
@@ -1136,7 +1138,7 @@ void BC_WindowBase::slide_right(int distance)
 }
 
 void BC_WindowBase::slide_up(int distance)
-{
+{ BT
        if(distance < h)
        {
                XCopyArea(top_level->display,
@@ -1161,7 +1163,7 @@ void BC_WindowBase::slide_up(int distance)
 }
 
 void BC_WindowBase::slide_down(int distance)
-{
+{ BT
        if(distance < h)
        {
                XCopyArea(top_level->display,