Changeset 2996

Show
Ignore:
Timestamp:
02/17/03 20:21:45 (6 years ago)
Author:
miyoshi
Message:

* mw32fns.c (mw32_cross_disabled_image): Restore the GDI object
that has been attached to the DC object.

* mw32font.c (mw32_lf_equal): Compare font requests instead of
font infos.

* mw32term.c (mw32_free_frame_resources): Free resources of
menubar and faces.
(x_destroy_window): Free frame resources before the destruction of
a window.
(mw32_draw_relief_rect): Restore the GDI object that has been
attached to the DC object.
(mw32_draw_box_rect): Ditto.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • work/cvs2svn/src/ChangeLog.Meadow

    r2995 r2996  
     12003-02-17  MIYOSHI Masanori  <miyoshi@boreas.dti.ne.jp> 
     2 
     3        * mw32fns.c (mw32_cross_disabled_image): Restore the GDI object 
     4        that has been attached to the DC object. 
     5 
     6        * mw32font.c (mw32_lf_equal): Compare font requests instead of 
     7        font infos. 
     8 
     9        * mw32term.c (mw32_free_frame_resources): Free resources of 
     10        menubar and faces. 
     11        (x_destroy_window): Free frame resources before the destruction of 
     12        a window. 
     13        (mw32_draw_relief_rect): Restore the GDI object that has been 
     14        attached to the DC object. 
     15        (mw32_draw_box_rect): Ditto. 
     16 
    1172003-02-14  MIYOSHI Masanori  <miyoshi@boreas.dti.ne.jp> 
    218 
  • work/cvs2svn/src/mw32fns.c

    r2989 r2996  
    78277827     struct image *img; 
    78287828{ 
    7829   HDC hdc =  FRAME_HDC(f); 
     7829  HDC hdc =  FRAME_HDC (f); 
    78307830  HDC hCompatDC; 
    78317831  HBITMAP hbmp, hbmpmask; 
     
    78337833  BITMAPINFO *pbmpinfo = pmimg->pbmpinfo; 
    78347834  unsigned char *pdata; 
     7835  HGDIOBJ hold1, hold2; 
    78357836 
    78367837  if (!cross_disabled_images) return; 
    78377838 
    7838   hCompatDC = CreateCompatibleDC(hdc); 
     7839  hCompatDC = CreateCompatibleDC (hdc); 
    78397840 
    78407841  hbmp = CreateDIBSection (hCompatDC, pbmpinfo, DIB_RGB_COLORS, 
    78417842                           (void **)&pdata, NULL, 0); 
    7842   if(!hbmp) 
    7843     { 
    7844       DeleteDC(hCompatDC); 
     7843  if (!hbmp) 
     7844    { 
     7845      DeleteDC (hCompatDC); 
    78457846      return; 
    78467847    } 
    7847   memcpy(pdata, pmimg->pbmpdata, pmimg->size); 
    7848  
    7849   SelectObject(hCompatDC, hbmp); 
    7850   SelectObject(hCompatDC, GetStockObject(BLACK_BRUSH)); 
    7851   MoveToEx(hCompatDC, 0, 0, NULL); 
    7852   LineTo(hCompatDC, img->width, img->height); 
    7853   MoveToEx(hCompatDC, img->width, 0, NULL); 
    7854   LineTo(hCompatDC, 0, img->height); 
    7855  
    7856   memcpy(pmimg->pbmpdata, pdata, pmimg->size); 
    7857   DeleteObject(hbmp); 
     7848  memcpy (pdata, pmimg->pbmpdata, pmimg->size); 
     7849 
     7850  hold1 = SelectObject (hCompatDC, hbmp); 
     7851  hold2 = SelectObject (hCompatDC, GetStockObject (BLACK_BRUSH)); 
     7852  MoveToEx (hCompatDC, 0, 0, NULL); 
     7853  LineTo (hCompatDC, img->width, img->height); 
     7854  MoveToEx (hCompatDC, img->width, 0, NULL); 
     7855  LineTo (hCompatDC, 0, img->height); 
     7856 
     7857  memcpy (pmimg->pbmpdata, pdata, pmimg->size); 
     7858  SelectObject (hCompatDC, hold2); 
     7859  SelectObject (hCompatDC, hold1); 
     7860  DeleteObject (hbmp); 
    78587861 
    78597862  if (pmimg->pbmpmask) 
     
    78647867      } maskinfo; 
    78657868 
    7866       memset(&maskinfo, 0, sizeof(maskinfo)); 
    7867       maskinfo.h.biSize = sizeof(BITMAPINFOHEADER); 
     7869      memset (&maskinfo, 0, sizeof (maskinfo)); 
     7870      maskinfo.h.biSize = sizeof (BITMAPINFOHEADER); 
    78687871      maskinfo.h.biWidth = pmimg->pbmpinfo->bmiHeader.biWidth; 
    78697872      maskinfo.h.biHeight = pmimg->pbmpinfo->bmiHeader.biHeight; 
     
    78717874      maskinfo.h.biBitCount = 1; 
    78727875      maskinfo.h.biCompression = BI_RGB; 
    7873       maskinfo.c[1].rgbRed = maskinfo.c[1].rgbGreen = maskinfo.c[1].rgbBlue = 255; 
    7874  
    7875       hbmp = CreateDIBSection (hCompatDC, (LPBITMAPINFO)&maskinfo, 
     7876      maskinfo.c[1].rgbRed = maskinfo.c[1].rgbGreen 
     7877        = maskinfo.c[1].rgbBlue = 255; 
     7878 
     7879      hbmp = CreateDIBSection (hCompatDC, (LPBITMAPINFO) &maskinfo, 
    78767880                               DIB_RGB_COLORS, (void **) &pdata, 
    78777881                               NULL, 0); 
    78787882      if (!(hbmp)) 
    78797883        { 
    7880           DeleteDC(hCompatDC); 
     7884          DeleteDC (hCompatDC); 
    78817885          return; 
    78827886        } 
    78837887      memcpy (pdata, pmimg->pbmpmask, pmimg->mask_size); 
    78847888 
    7885       SelectObject(hCompatDC, hbmp); 
    7886       SelectObject(hCompatDC, GetStockObject(WHITE_BRUSH)); 
    7887       MoveToEx(hCompatDC, 0, 0, NULL); 
    7888       LineTo(hCompatDC, img->width, img->height); 
    7889       MoveToEx(hCompatDC, img->width, 0, NULL); 
    7890       LineTo(hCompatDC, 0, img->height); 
     7889      hold1 = SelectObject (hCompatDC, hbmp); 
     7890      hold2 = SelectObject (hCompatDC, GetStockObject (WHITE_BRUSH)); 
     7891      MoveToEx (hCompatDC, 0, 0, NULL); 
     7892      LineTo (hCompatDC, img->width, img->height); 
     7893      MoveToEx (hCompatDC, img->width, 0, NULL); 
     7894      LineTo (hCompatDC, 0, img->height); 
    78917895      memcpy (pmimg->pbmpmask, pdata, pmimg->mask_size); 
    78927896 
    7893       DeleteObject(hbmp); 
    7894     } 
    7895  
    7896   DeleteDC(hCompatDC); 
     7897      SelectObject (hCompatDC, hold2); 
     7898      SelectObject (hCompatDC, hold1); 
     7899      DeleteObject (hbmp); 
     7900    } 
     7901 
     7902  DeleteDC (hCompatDC); 
    78977903  return; 
    78987904} 
  • work/cvs2svn/src/mw32font.c

    r2995 r2996  
    12901290 
    12911291static int 
    1292 mw32_lf_equal(MW32LogicalFont *plf1, MW32LogicalFont *plf2) 
     1292mw32_lf_equal (MW32LogicalFont *plf1, MW32LogicalFont *plf2) 
    12931293{ 
    12941294#define LF_EQUAL_ELEM(elem) (plf1->elem == plf2->elem) 
    1295   return (LF_EQUAL_ELEM(width) 
    1296           && LF_EQUAL_ELEM(ascent) 
    1297           && LF_EQUAL_ELEM(descent) 
    1298           && LF_EQUAL_ELEM(overhang) 
    1299           && LF_EQUAL_ELEM(encoding_type) 
    1300           && LF_EQUAL_ELEM(relative_compose) 
    1301           && LF_EQUAL_ELEM(character_spacing) 
    1302           && LF_EQUAL_ELEM(default_ascent) 
    1303           && LF_EQUAL_ELEM(fixed_pitch) 
    1304           && LF_EQUAL_ELEM(dim) 
    1305           && LF_EQUAL_ELEM(hash) 
    1306           && LF_EQUAL_ELEM(textout) 
    1307           && LF_EQUAL_ELEM(glyph_metric) 
    1308           && LF_EQUAL_ELEM(set_layout) 
    1309           && LF_EQUAL_ELEM(free) 
    1310           && mw32_ccl_method_equal(plf1->ccl_method, plf2->ccl_method) 
    1311           && plf1->fontip && plf2->fontip 
    1312           && strcmp(plf1->fontip->full_name, plf2->fontip->full_name) == 0); 
     1295  return (LF_EQUAL_ELEM (width) 
     1296          && LF_EQUAL_ELEM (ascent) 
     1297          && LF_EQUAL_ELEM (descent) 
     1298          && LF_EQUAL_ELEM (overhang) 
     1299          && LF_EQUAL_ELEM (encoding_type) 
     1300          && LF_EQUAL_ELEM (relative_compose) 
     1301          && LF_EQUAL_ELEM (character_spacing) 
     1302          && LF_EQUAL_ELEM (default_ascent) 
     1303          && LF_EQUAL_ELEM (fixed_pitch) 
     1304          && LF_EQUAL_ELEM (dim) 
     1305          && LF_EQUAL_ELEM (hash) 
     1306          && LF_EQUAL_ELEM (textout) 
     1307          && LF_EQUAL_ELEM (glyph_metric) 
     1308          && LF_EQUAL_ELEM (set_layout) 
     1309          && LF_EQUAL_ELEM (free) 
     1310          && LF_EQUAL_ELEM (pfr) 
     1311          && mw32_ccl_method_equal (plf1->ccl_method, plf2->ccl_method)); 
    13131312#undef LF_EQUAL_ELEM 
    13141313} 
  • work/cvs2svn/src/mw32term.c

    r2995 r2996  
    615615      xassert (i < MAX_DC_NUM); 
    616616      RestoreDC (hdc, -1); 
    617       ReleaseDC (FRAME_MW32_WINDOW(f), hdc); 
     617      ReleaseDC (FRAME_MW32_WINDOW (f), hdc); 
    618618    } 
    619619} 
     
    36053605  LOGBRUSH logpenbrush; 
    36063606  HPEN hp1, hp2, hptmp; 
     3607  HGDIOBJ hold1, hold2; 
     3608 
    36073609  logpenbrush.lbStyle = BS_SOLID; 
    36083610  logpenbrush.lbHatch = 0; 
     
    36293631        } 
    36303632 
    3631       SelectObject (hdc, hp1); 
     3633      hold1 = SelectObject (hdc, hp1); 
    36323634      if (left_p) 
    36333635        { 
     
    36483650      /* To draw the point (left_x, bottom_y), sub 1 to the end.  */ 
    36493651      LineTo (hdc, left_x - 1, bottom_y); 
     3652      SelectObject (hdc, hold1); 
    36503653    } 
    36513654  else if (width > 1) 
     
    36693672      width--; 
    36703673      /* top-left.  */ 
    3671       SelectObject (hdc, hp1); 
    3672       SelectObject (hdc, hb1); 
     3674      hold1 = SelectObject (hdc, hp1); 
     3675      hold2 = SelectObject (hdc, hb1); 
    36733676      if (left_p) 
    36743677        { 
     
    37043707                     right_x + 1, bottom_y + 1); 
    37053708        } 
     3709      SelectObject (hdc, hold2); 
     3710      SelectObject (hdc, hold1); 
    37063711      DeleteObject (hb1); 
    37073712      DeleteObject (hb2); 
     
    37283733  HRGN rr_rgn; 
    37293734  HBRUSH hb; 
     3735  HGDIOBJ hold; 
    37303736 
    37313737  SaveDC (hdc); 
    37323738  hb = CreateSolidBrush (s->face->box_color); 
    3733   SelectObject (hdc, hb); 
     3739  hold = SelectObject (hdc, hb); 
    37343740  if (clip_rgn != INVALID_HANDLE_VALUE) 
    37353741    SelectClipRgn (hdc, clip_rgn); 
     
    37543760  r.bottom = bottom_y; 
    37553761  FillRect (hdc, &r, hb); 
    3756    
     3762 
     3763  SelectObject (hdc, hold); 
    37573764  RestoreDC (hdc, -1); 
    37583765  DeleteObject (hb); 
     
    1002310030  BLOCK_INPUT; 
    1002410031 
     10032  free_frame_menubar (f); 
     10033 
     10034  if (FRAME_FACE_CACHE (f)) 
     10035    free_frame_faces (f); 
     10036   
    1002510037  mw32_destroy_frame_hdc(f); 
    1002610038  CloseHandle(f->output_data.mw32->mainthread_to_frame_handle); 
     
    1005610068  MSG msg; 
    1005710069  struct mw32_display_info *dpyinfo = FRAME_MW32_DISPLAY_INFO (f); 
    10058  
    10059   SEND_INFORM_MESSAGE (FRAME_MW32_WINDOW(f), 
    10060                        WM_EMACS_DESTROY_FRAME, 0, 0); 
     10070  HWND hwnd = FRAME_MW32_WINDOW(f); 
     10071 
     10072  mw32_free_frame_resources (f); 
     10073 
     10074  SEND_INFORM_MESSAGE (hwnd, WM_EMACS_DESTROY_FRAME, 0, 0); 
    1006110075  WAIT_REPLY_MESSAGE (&msg, WM_EMACS_DESTROY_FRAME_REPLY); 
    10062  
    10063   mw32_free_frame_resources (f); 
    1006410076 
    1006510077  dpyinfo->reference_count--;