Changeset 2999
- Timestamp:
- 02/18/03 19:20:21 (6 years ago)
- Files:
-
- work/cvs2svn/src/ChangeLog.Meadow (modified) (1 diff)
- work/cvs2svn/src/mw32font.c (modified) (17 diffs)
- work/cvs2svn/src/mw32font.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
work/cvs2svn/src/ChangeLog.Meadow
r2998 r2999 1 2003-02-18 MIYOSHI Masanori <miyoshi@boreas.dti.ne.jp> 2 3 * mw32font.c (mw32_wf_allocator_reserve): New function. 4 (mw32_wf_allocator_cancel): Ditto. 5 (mw32_set_windows_logical_font): Call mw32_wf_allocator_cancel() 6 instead of xfree(). 7 (set_font_info): Allocate heap memory after set_ccl_method() 8 successfully has finished. 9 (mw32_find_ccl_program): Ditto. 10 (mw32_internal_add_font): Allocate memory chunk for pointers to 11 MW32LogicalFont. 12 (mw32_lf_allocator_reserve): New function. 13 (mw32_lf_allocater_cancel): Ditto. 14 (mw32_add_logical_font): Call mw32_lf_allocator_reserve() instead 15 of xmalloc(). 16 (mw32_add_logical_font): Expand memory chunk if no space is left. 17 (mw32_delete_logical_font): Call mw32_lf_allocater_cancel() 18 instead of xfree(). 19 20 * mw32font.h (struct MW32FontRequest): New member variable. 21 1 22 2003-02-17 MIYOSHI Masanori <miyoshi@boreas.dti.ne.jp> 2 23 work/cvs2svn/src/mw32font.c
r2998 r2999 115 115 116 116 Lisp_Object Vmw32_windows_font_charset_database; 117 118 static mw32_windows_font *mw32_wf_allocator_current_data = 0; 119 static mw32_windows_font *mw32_wf_allocator_last_data = 0; 120 121 static mw32_windows_font * 122 mw32_wf_allocator_reserve (void) 123 { 124 if (!mw32_wf_allocator_current_data) 125 { 126 mw32_wf_allocator_last_data 127 = (mw32_windows_font *) xmalloc (sizeof (mw32_windows_font)); 128 } 129 else 130 { 131 mw32_wf_allocator_last_data = mw32_wf_allocator_current_data; 132 mw32_wf_allocator_current_data = 0; 133 } 134 135 return mw32_wf_allocator_last_data; 136 } 137 138 static void 139 mw32_wf_allocator_cancel (void) 140 { 141 mw32_wf_allocator_current_data = mw32_wf_allocator_last_data; 142 mw32_wf_allocator_last_data = 0; 143 } 117 144 118 145 static void … … 330 357 } 331 358 332 static void mw32_logfont_free (MW32LogicalFont *plf)359 static void mw32_logfont_free (MW32LogicalFont *plf) 333 360 { 334 361 mw32_windows_font *pwf = (mw32_windows_font*) plf->pphys; … … 336 363 if (pwf->pfont != INVALID_HANDLE_VALUE) 337 364 DeleteObject(pwf->pfont); 338 xfree(pwf);365 mw32_wf_allocator_cancel (); 339 366 } 340 367 … … 367 394 368 395 static int 369 mw32_set_windows_logical_font (struct frame *f, MW32LogicalFont *plf,370 LOGFONT *plogf)396 mw32_set_windows_logical_font (struct frame *f, MW32LogicalFont *plf, 397 LOGFONT *plogf) 371 398 { 372 399 mw32_windows_font *pwf; 373 400 HFONT hf; 374 401 375 pwf = (mw32_windows_font*) xmalloc(sizeof(mw32_windows_font));402 pwf = mw32_wf_allocator_reserve (); 376 403 377 404 /* set attributes. */ 378 if (hf = CreateFontIndirect (plogf))405 if (hf = CreateFontIndirect (plogf)) 379 406 { 380 407 HWND hwnd; … … 392 419 } 393 420 394 hwnd = FRAME_MW32_WINDOW (f);421 hwnd = FRAME_MW32_WINDOW (f); 395 422 if (hwnd) 396 hdc = FRAME_HDC (f);423 hdc = FRAME_HDC (f); 397 424 else 398 hdc = GetDC (GetDesktopWindow());399 400 oldobj = SelectObject (hdc, hf);401 flag = GetTextMetrics (hdc, &tm);402 SelectObject (hdc, oldobj);425 hdc = GetDC (GetDesktopWindow ()); 426 427 oldobj = SelectObject (hdc, hf); 428 flag = GetTextMetrics (hdc, &tm); 429 SelectObject (hdc, oldobj); 403 430 if (!hwnd) 404 ReleaseDC (GetDesktopWindow(), hdc);431 ReleaseDC (GetDesktopWindow (), hdc); 405 432 else if (mhdc != INVALID_HANDLE_VALUE) 406 433 { … … 426 453 else 427 454 { 428 xfree(pwf);455 mw32_wf_allocator_cancel (); 429 456 return 0; 430 457 } … … 443 470 { 444 471 int i; 445 MW32_CHARMETRIC_INVALIDATE (pwf->cur_cm);446 for (i = 0;i < (sizeof (pwf->cmcache) / sizeof(pwf->cmcache[0]));i++)447 MW32_CHARMETRIC_INVALIDATE (pwf->cmcache[i]);472 MW32_CHARMETRIC_INVALIDATE (pwf->cur_cm); 473 for (i = 0;i < (sizeof (pwf->cmcache) / sizeof (pwf->cmcache[0]));i++) 474 MW32_CHARMETRIC_INVALIDATE (pwf->cmcache[i]); 448 475 } 449 476 … … 512 539 bdffont* pbf = (bdffont*) plf->pphys; 513 540 514 if (pbf != NULL)541 if (pbf != NULL) 515 542 { 516 543 mw32_free_bdf_font(pbf); … … 673 700 { 674 701 int i; 702 struct ccl_program ccl_prog; 675 703 676 704 fontp->charset = CHAR_CHARSET(c); 677 fontp->font_encoder678 = (struct ccl_program *) xmalloc (sizeof (struct ccl_program));679 if (!set_ccl_method(plf->ccl_method, fontp->font_encoder))705 if (!set_ccl_method (plf->ccl_method, &ccl_prog)) 706 fontp->font_encoder = NULL; 707 else 680 708 { 681 xfree(fontp->font_encoder); 682 fontp->font_encoder = NULL; 709 fontp->font_encoder 710 = (struct ccl_program *) xmalloc (sizeof (struct ccl_program)); 711 *(fontp->font_encoder) = ccl_prog; 683 712 } 684 713 fontp->encoding[0] = fontp->encoding[1] = plf->encoding_type; … … 767 796 MW32LogicalFont *plf; 768 797 Lisp_Object encoding; 798 struct ccl_program ccl_prog; 769 799 770 800 plf = (MW32LogicalFont*) fontp->font; 771 801 if (!plf) return; 772 802 773 fontp->font_encoder 774 = (struct ccl_program *) xmalloc (sizeof (struct ccl_program)); 775 if (!set_ccl_method(plf->ccl_method, fontp->font_encoder)) 776 { 777 xfree(fontp->font_encoder); 778 fontp->font_encoder = NULL; 803 if (!set_ccl_method (plf->ccl_method, &ccl_prog)) 804 fontp->font_encoder = NULL; 805 else 806 { 807 fontp->font_encoder 808 = (struct ccl_program *) xmalloc (sizeof (struct ccl_program)); 809 *(fontp->font_encoder) = ccl_prog; 779 810 } 780 811 return; … … 815 846 Vmw32_font_request_table = tem; 816 847 817 mw32_fr_table = (MW32FontRequest*) xrealloc(mw32_fr_table, 818 sizeof(MW32FontRequest) * newsize); 848 mw32_fr_table = (MW32FontRequest*) xrealloc (mw32_fr_table, 849 sizeof(MW32FontRequest) 850 * newsize); 819 851 } 820 852 AREF (Vmw32_font_request_table, idx) = alist; … … 822 854 pfr->idx = idx; 823 855 pfr->loaded_LF_num = 0; 824 pfr->pLFs = NULL; 856 pfr->num_pLFs = 4; 857 pfr->pLFs = (MW32LogicalFont**) xmalloc (sizeof (MW32LogicalFont *) 858 * pfr->num_pLFs); 859 bzero (pfr->pLFs, sizeof (MW32LogicalFont *) * pfr->num_pLFs); 825 860 pfr->name = xstrdup(name); 826 861 … … 1376 1411 LF loaders 1377 1412 ***********************************************************************/ 1413 static MW32LogicalFont *mw32_lf_allocator_last_data = 0; 1414 static MW32LogicalFont *mw32_lf_allocator_current_data = 0; 1415 1416 static MW32LogicalFont * 1417 mw32_lf_allocator_reserve (void) 1418 { 1419 if (!mw32_lf_allocator_current_data) 1420 { 1421 mw32_lf_allocator_last_data 1422 = (MW32LogicalFont *) xmalloc (sizeof (MW32LogicalFont)); 1423 } 1424 else 1425 { 1426 mw32_lf_allocator_last_data = mw32_lf_allocator_current_data; 1427 mw32_lf_allocator_current_data = 0; 1428 } 1429 1430 return mw32_lf_allocator_last_data; 1431 } 1432 1433 static void 1434 mw32_lf_allocater_cancel (void) 1435 { 1436 mw32_lf_allocator_current_data = mw32_lf_allocator_last_data; 1437 mw32_lf_allocator_last_data = 0; 1438 } 1378 1439 1379 1440 int … … 1477 1538 mw32_plf_alloced_num *= 2; 1478 1539 } 1479 plf = (MW32LogicalFont*) xmalloc(sizeof(MW32LogicalFont));1540 plf = mw32_lf_allocator_reserve (); 1480 1541 mw32_plf_table[mw32_lf_num] = plf; 1481 1542 i = mw32_lf_num; … … 1489 1550 if (!*pplf) 1490 1551 { 1491 *pplf = plf = (MW32LogicalFont*) xmalloc(sizeof(MW32LogicalFont));1552 *pplf = plf = mw32_lf_allocator_reserve (); 1492 1553 break; 1493 1554 } … … 1502 1563 plf->hash = mw32_default_hash_function; 1503 1564 1504 pfr->pLFs = (MW32LogicalFont**) xrealloc(pfr->pLFs, 1505 sizeof(MW32LogicalFont*) 1506 * (pfr->loaded_LF_num + 1)); 1507 (pfr->pLFs)[pfr->loaded_LF_num++] = plf; 1565 if (pfr->num_pLFs < pfr->loaded_LF_num + 1) 1566 { 1567 pfr->num_pLFs *= 2; 1568 pfr->pLFs = (MW32LogicalFont**) xrealloc(pfr->pLFs, 1569 sizeof(MW32LogicalFont*) 1570 * (pfr->num_pLFs)); 1571 } 1572 pfr->pLFs[pfr->loaded_LF_num++] = plf; 1508 1573 1509 1574 mw32_lf_num++; … … 1553 1618 1554 1619 mw32_plf_table[plf->idx] = NULL; 1555 xfree(plf);1620 mw32_lf_allocater_cancel (); 1556 1621 mw32_lf_num--; 1557 1622 } work/cvs2svn/src/mw32font.h
r2926 r2999 82 82 int loaded_LF_num; 83 83 MW32LogicalFont **pLFs; 84 int num_pLFs; 84 85 }; 85 86
